小蚂蚁~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的途径;

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

设计为场景而生,无所谓高端低端!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值