问题:
芯片: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
总结:
多看看手册,上面有很详细的解说。
本文解决了一个STM32F103RB芯片中PB3、PB4无法输出高电平的问题。通过检查发现,这两个管脚默认处于复用状态,需重新配置为普通GPIO。文中提供了具体的配置代码。
794

被折叠的 条评论
为什么被折叠?



