24MHZ在1T模式下,误差最多就是1/24 做1uS肯定是没有问题的 问题是,你要这1uS又是可调的干嘛? 如果是计时,可以用定时器 如果输出PWM......很少有用到1MHZ的PWM的 也许,你想要的功能,可以通过其它方式来实现,还不如说说你要做什么好点 |
1、已经设置为自动从装了,为何还要重置时常路,不合理。 2、每个us反转输出就完成2us的周期脉冲输出了,为何还要用NUM数数,也不合理。 两个不合理,导致程序执行时间过长,超出中断时间! 根本问题:中断时间不能太短,当中断服务程序运行时间>中断时间时,时序就控制不了了。 |
自动重装初值模式,中断内不要赋值 TH0、TL0寄存器。 |
所有的锅都甩给八位机,就是不提系统架构设计,应用合理性。 你STM32做1us的中断也不见得中断程序里面你能多跑几条代码 |
发送连续波形完全可以用定时器自身的功能。只有单次输出才需要中断。 |
时间太短了,进中断处理、退出中断,总时间已经超过1us,所以会不准。 |
STC的下载软件内都有范例程序的,你可以用范例试试呢 |
下载软件.png (75.33 KB, 下载次数: 58)
自动重装不需要再给TH0、TL0赋值,2us周期脉冲也不适合用定时器中断。改用高速脉冲输出功能为宜。 |
stm32的应该没问题 |
为什么非要用中断呢? 用 INT_CLKO |= 0x01; 直接输出不好么? |
stm32肯定可以达到 |
赋值、指令执行和判断都是要花时间的;不同的指令执行的时间也不一样;而且1us那么短;对于这种芯片来说还要调时间;肯定是吃不消的,要么用硬件pwm |
1us除了中断,能做的事不多了啊 |
自动重装初值模式,中断内不要赋值 TH0、TL0寄存器。 |