STM32不会有这个问题,用GD32时才要注意
以为GD32 GPIO初始化时引脚高阻态,但并不是
前提:LED低电平亮,高电平灭
如果让GD32引脚控制LED的亮灭,在GPIO初始化前后,会出现LED闪烁一下的情况
在初始化时,原本的写法是:
gpio_bit_write(RCU_GPIOA,LED_Pin,SET); //先拉高电平,保证初始化后不会闪过低电平
gpio_init(GPIOA,GPIO_MODE_OUT_PP,GPIO_OSPEED_2MHZ,LED_PIN);
gpio_bit_write(RCU_GPIOA,LED_Pin,SET); //没什么用但是写上表示初始化后GPIO是高电平
但后果是GPIO会在低电平后再变为高电平;然后正常运行
这只是灯闪这一下,如果GPIO驱动的是其他东西,那问题就大了
解决方法:
1、设置上拉输入
2、设置引脚为高电平
3、设置引脚为输出
4、设置引脚为高电平
gpio_init(GPIOA,GPIO_MODE_IPU,GPIO_OSPEED_2MHZ,LED_Pin);//上拉输入
gpio_bit_write(RCU_GPIOA,LED_Pin,SET); //先拉高电平,保证初始化后不会闪过低电平
gpio_init(GPIOA,GPIO_MODE_OUT_PP,GPIO_OSPEED_2MHZ,LED_PIN);
gpio_bit_write(RCU_GPIOA,LED_Pin,SET); //没什么用但是写上表示初始化后GPIO是高电平
不过具体是为什么要这么写确实不懂,反正问题解决了