你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F030 定时器移植问题

[复制链接]
STMCU小助手 发布时间:2022-2-24 19:21
问题:
某客户工程师在某型号新产品的设计中,使用 STM32F030R8 的 TIM15 的 CH1 和 CH2 来产生需要的波形(2 路 PWM 信号)。
据其工程师讲述:在以前的产品上,是使用 STM32F101 的 TIM3/4 产生同样的波形。现在,将原代码移植到 STM32F030 的 TIM15 上,发现仅有一路输出(CH2),另一路(CH1)没有输出。


调研:
首先查看数据手册,看看是否是管脚映射出错。经核对,没有问题;
其次查看寄存器,看看配置是否有问题。经核对,TIM15_CR2 的位 0 被置位。参考手册里寄存器描述中
有如下说明,
CCPC: Capture/compare preloaded control
0: CCxE, CCxNE and OCxM bits are not prel
1: CCxE, CCxNE and OCxM bits are preloaded, after having been written, they are updated only when COM bit is set.
这意味着,当 CCPC 被置位后,必须先有一个 COM 事件触发,才会将 CCxE/CCxNE/OCxM 位加载到寄存器中。如果没有 COM 事件,则相关设置不会被加载,就无法产生期望的输出波形。


结论:
移植过程中,不同定时器的差异导致代码需要微调。


处理:
两种方法:
1)将 CCPC 位清零(即不采用预装载方式)即可;
2)如果 CCPC 位不清零,那么程序中在打开 TIM15 后,采用软件产生 COM 事件的方法(将TIM15_EGR 中的 COMG 位置位即可。)


建议:
STM32 的 产品系列越来越多,而每个产品的资源不仅有“大同”,也存在“小异”。在使用的时候,尤其是移植时发生问题后,要耐心、细心查找问题的所在。对于同样的外设,以 TIMER 为例,不同的产品又有多个不同的 TIMER。尽管功能都类似,但仍然有可能存在一些细微的差别,尤其是不同类型的 TIMER 之间,即使是同一颗芯片,也有差异(例如 TIM1 和TIM3)。使用的时候,要根据手册正确进行配置。
此外,由于芯片有各种不同的封装,还要查看数据手册查看 IO 引脚是否有效,配置是否合理等。

收藏 评论0 发布时间:2022-2-24 19:21

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版