stm32为什么在设置引脚高低位的时候没有反应嘞?
时间:10-02
整理:3721RD
点击:
- <div class="blockcode"><blockquote> int main (void)
- {
- u16 i = 0;
- Delay_Init(72);
- GPIOA_Init();
- for( i = 200; i > 0; i--)
- {
- Delay_ms(50);
- GPIO_SetBits (GPIOA, GPIO_Pin_3);
- Delay_ms(50);
- GPIO_ResetBits(GPIOA, GPIO_Pin_3);
- }
- }
复制代码
- void GPIOA_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
- GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; //PA.3
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&GPIO_InitStruct);
- }
如上面的代码所示,运行的时候用keil的仿真器测试了一下管教PA.3的状态,结果一直是低电平输出,没有出现预想的矩形波。好像置位的两句代码就没有反应。
为什么要设置为复用推挽输出呢,如果只是纯粹要输出脉冲的话,只需要配置成推挽输出就好哦
PA.3的复用功能是USART2、ADC等,你配置成复用功能了就不能当做普通的IO来用,输出的也当然不是你想要的了。你的想法是把PA.3当做普通的IO来用,用延时的方法来控制高低电平产生矩形波,只需要打开时钟,配置成Out_PP就行了,何必多此一举打开复用时钟,还配置成复用推挽呢
