【建议贴】能否新增一个1微秒系统滴答计数寄存器?
由于单片机性能的不断提升,在程序设计上,也越来越趋向于使用各种各样的任务处理系统。目前主要使用“不可屏蔽中断的16位自动重装载模式”的定时器做系统滴答计时器,
以车规级芯片STC32G12K128为例,最简易的任务处理系统就是使用定时器0产生1ms的中断,
作运行时间累加,主循环中对运行时间进行处理,并循环定时处理周期性任务。
1毫秒,说长也不长,说短也不短。
对于绝大多数简单的程序设计,1ms时基,足以应对,但相应的也失去了定时器/计数器0。
此外,如果希望以更小的时基标准处理任务,也许难以成就,若中断时间改为1us,程序将无法正常运行,因为几乎所有时间都被1us中断所占用了。
因此,大胆设想并提议,能否在未来的新款芯片中,新增一个类似RTC时钟的计时功能?
在单片机上电后,从0开始以1us时基不断累加,
这个时基计数值不可修改,只读,用户只需要在主循环中不断读取寄存器中的计数值,
与上一次读取的值作差,即可精确获取系统运行时间,并对任务进行处理。
也许还可以规划出一片用户只读空间,用于保存芯片的实际使用时间(XX年XX月XX日或XXXX小时),
可以避免用户购买到翻新芯片,保护用户权益。
看完手册目录了吧,,你说的这些东西,,虽然不是完全一致的。类似的都有了。 神农鼎 发表于 2026-1-16 18:54
我的意思是,定时器不是最优解,还是会中断CPU运行,是否有尝试过1us的时基标准?
以1us的定时器中断,程序是否还能正常运行?
若主频为100MHz,1us可以有100个时钟周期,不知系统滴答处理需要用掉多少时钟周期,若需要消耗5个时钟周期,是否可以理解为,需要消耗5%的CPU性能?
目前24MHz,1ms时基,大概有24000个时钟周期,若需要消耗5个时钟周期,约0.021%可以忽略不计。
能否从硬件层面,设计一个“时基系统”?不会打断CPU运行,用户只能读参数。
当然,这只是对未来的一种设想建议。
锦鈓 发表于 2026-1-17 17:36
我的意思是,定时器不是最优解,还是会中断CPU运行,是否有尝试过1us的时基标准?
以1us的定时器中断,程 ...
定时器也可以不设置中断。 _奶咖君_ 发表于 2026-1-19 08:58
定时器也可以不设置中断。
请指点一个不用中断做系统时基的方法{:baoquan:} 精确1us的延时不好搞 直接上个32位定时器,能一次性直接读取32位值的那种,内核本身是支持这样的操作的 patch1582 发表于 2026-1-19 09:58
精确1us的延时不好搞
可以弄一个1MHz的晶振,内部集成不了,就弄两个引脚外接。1MHz的整数倍都可以,10MHz就是0.1us,100MHz就是0.01us,1GHz就是1ns Ayb_ice 发表于 2026-1-19 10:17
直接上个32位定时器,能一次性直接读取32位值的那种,内核本身是支持这样的操作的 ...
和我的设想几乎一致了。问题是目前定时器不支持读计数值吧,都是靠溢出中断,作处理