STM32 定时器输入捕获注意点

使用的是stm32f103rct6.

最近在写一个单定时器捕获4路pwm波的程序,那就必须在中断函数中改变检测边沿,通过手动记录捕获值来手动计算pwm的频率和脉宽值。

网上也有很多相关程序,但是我在写的时候却碰到了一个对于初学者来说非常不起眼的问题,导致结果怎么都不对:

如图中所示,我正在用TIM4_CH1,因为看见其他的结构体都是自己定义一边再使用的,于是我将‘TIM_TypeDef’这个结构体也自己定义了一个对象‘TIM4_Type’然后就发现结果不对。

后来仔细分析后发现这个结构体已在stm32f10x.h中有了对象实例:TIM4。并且这个TIM4所在的地方正是那些寄存器所处的地方,而我自己定义的对象‘TIM4_Type’是出于用户内存区,所以不论怎么操作‘TIM4_Type’都不能得到正确的结果。

后来去V3.5的官方手册看了下,发现那些‘xxx_TypeDef’的结构体都在stm32f10x.h有着自己的对象申明,都有自己特定的内存地址,也就是说这一类的结构体都不需要自己定义,而其他种类的由于没有特定的内存地址,故需要自己定义后才能操作。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值