问题:
芯片:stm32f103rbt6,其中有PB3、PB4不能输出高低电平控制风扇,
程序代码没有问题、使能了GPIOB的时钟、使用了官方的库函数、寄存器操作都不能输出高电平。
分析:
1.开始以为是代码的问题,认认真真的分析了代码;debug调试都是正常可以运行
2.使用串口打印运行信息,发现能够打印出来
3.再次确定过GPIO的配置,发现还是没有问题
4.检查了硬件,发现没有问题,焊接正常
5.查阅芯片手册,恍然大悟,最终发现是对应的GPIO管脚是默认复用的状态
下面附上芯片手册上面的描述:
应该留意到某一些管脚上电默认是复用状态、需要重定义到普通的GPIO管脚,如禁用JTAG或者SWD管脚释放一些GPIO管脚;
做法:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE );
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //Disable Jlink,enable SW
总结:
多看看手册,上面有很详细的解说。