小蚂蚁~STM32端口重映射~驱动蜂鸣器

最近,在做一块继电器控制的板子(stm32f103),通过采集数据,数据分析,做出判断,控制继电器开/闭状态,遇到一个很简单确经常容易忽略的问题;蜂鸣器驱动IO电压始终在1V左右,导致9013s无法导通,无法形成回路,蜂鸣器没工作,原理如下:



最开始,一直没考虑程序的问题,担心偏置电阻有问题,也排除过是三极管损坏,,反复焊接测试,均会出现无法导通,最后,改用Pmos来驱动,但是依然无效;当时很疑惑,单片机IO控制肯定没问题,初始化完全OK,但是最后在反复审视电路图的时候发现,IO使用的PA15,截图如下:


好吧,原来默认是JTAG功能,换句话说它不是一般的IO,需要做重新映射!

问题确认了,开始改:

涉及函数如下:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);   //开启时钟


GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);  // 注意!词语局会导致无法烧写,禁用了jtag swd;如果仍想继续烧写,需要将boot0拉高,boot1拉低,此时,可以烧写做更改;

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);  //最终锁定使用次函数来实现普通IO功能,第一JTAG不常用,禁用了不影响,并且保留了SWD烧写模式,因此,作为最佳初始化PA15的途径;

最后,感慨一下,做了很多年硬件,当你有一天突然发现一个蜂鸣器居然不想了,真的是会开始质疑自己的设计,质疑自己的一切认知,有种重新再去看电路分析的冲动! 搞定后~~~ 继续码农生涯

设计为场景而生,无所谓高端低端!小蚂蚁~STM32端口重映射~驱动蜂鸣器_第1张图片





你可能感兴趣的:(STM32XX)