因为STM32F103的高级定时器重复计数寄存器(RCR)的有效位只有8位,而我需要输出超过256个PWM脉冲,且保证每个脉冲之间必须连续。我目前设想的实现方案为:假设我需要输出260个脉冲 1、关闭单脉冲模式,将RCR寄存器写入最高值255,软件引发一次更新事件,使RCR的值生效,然后清除标志位并打开更新中断。 2、将RCR的值设置为4,RCR的值只有在下一次更新事件后生效。使能计数器,计数器在输出256个脉冲后更新并进入更新中断 3、在2的更新后RCR的新值(4)生效,在更新中断中开启单脉冲模式,使计数器在输出4个脉冲后停止计数。 但现在的问题是,通过逻辑分析仪分析,最终输出的脉冲数量仍为256,通过debug查看,程序运行后RCR计数器已被设置为4,单脉冲模式被置位,计数器失能。也就是说,最后4个脉冲还没开始输出计数器就已经失能了。因此猜想是不是因为在2的更新中断中,使能单脉冲的同时会使计数器失能,导致最后4个脉冲无法输出? |
STM32F107 DP83848 lwip通信 做客户端 无法同PC端建立联系
STM32F103C8T6 CubeMX Lwip設定問題
HAL_UART_Transmit 造成MemManage_Handler中断
如何设计硬件R-2R梯形网络电路,得以输出16bit的分辨率?
UFQFPN48
安装MDK-ARM软件时最后出现PackUnzip.exe没有注册类的问题,导致软件无法安装
为什么注册不了ST账户,发送邮件后输入密码后就没反映?
STM32 HID和CDC组合设备无法枚举成功
使用STM32F103控制两步进电机同时进行不同的运动(软件指令驱动),与控制一个电机的不同之处在于哪里?
STC Auto Programmer如何下载程序到STM32F103R?
你的猜测是有道理的。
单脉冲模式下,启动计数器发生下次更新时会停止计数。所以,你这里可以考虑根据更新中断
将计数器重新启动下;
或者换个方式,比方使用DMA方式一次性地输出256个脉冲;