微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32为什么在设置引脚高低位的时候没有反应嘞?

stm32为什么在设置引脚高低位的时候没有反应嘞?

时间:10-02 整理:3721RD 点击:

  1. <div class="blockcode"><blockquote> int main (void)
  2. {
  3. u16 i = 0;
  4. Delay_Init(72);       

  5. GPIOA_Init();
  6. for( i = 200; i > 0; i--)
  7. {
  8. Delay_ms(50);
  9. GPIO_SetBits (GPIOA, GPIO_Pin_3);
  10. Delay_ms(50);
  11. GPIO_ResetBits(GPIOA, GPIO_Pin_3);
  12. }
  13. }

复制代码


  1. void GPIOA_Init(void)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStruct;
  4.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);       
  5.         GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;                                                                                                                                //PA.3
  6.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;                                                                                                                                               
  7.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  8.         GPIO_Init(GPIOA,&GPIO_InitStruct);
  9. }

复制代码


如上面的代码所示,运行的时候用keil的仿真器测试了一下管教PA.3的状态,结果一直是低电平输出,没有出现预想的矩形波。好像置位的两句代码就没有反应。

为什么要设置为复用推挽输出呢,如果只是纯粹要输出脉冲的话,只需要配置成推挽输出就好哦

PA.3的复用功能是USART2、ADC等,你配置成复用功能了就不能当做普通的IO来用,输出的也当然不是你想要的了。你的想法是把PA.3当做普通的IO来用,用延时的方法来控制高低电平产生矩形波,只需要打开时钟,配置成Out_PP就行了,何必多此一举打开复用时钟,还配置成复用推挽呢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top