盘点一下STC8A8K64D4上的 17个“定时器"和吐槽~
新人第一次发帖,,有一些字体上大大小小就当作测试了。首先稍微说一说盘点的前提,单片机如题,选择了STC8A8K64D4 48脚的单片机,其实是自己平常工作的时候用的最多的单片机。然后这里叙述的是单片机自身的硬件资源,软件实现的部分不在讨论范围内。
最后自己本身是一个软件工程师,平常的工作内容多以集成开发比较多,在一个产品上经常要使用多个通讯模块或以多种探头模组,而且经常需要完成一些定时任务,所以对于定时器、串口的使用是非常频繁。。那么基于上面的个人使用前提开始盘点单片机上可以用作『定时器』的硬件资源吧。如果有描述不准确的地方,轻点打脸,55555
第一、定时器。手册上写着这个单片机一共拥有5个定时器,乍一看确实不少,但是其中4个需要用作四个串口的波特率发生器。结果就只有一个Timer0可以自由使用。在最开始入行的时候,只有一个定时器可以自由使用可是把我愁住了。串口数据分包要死死占用一个定时器,如果再有其他的定时任务,就只能看哪个串口没有使用然后把它的定时器用作定时任务。导致的结果再那段时间里,经常要改手里的代码,其实都是一些拆了东墙补西墙、倒过来倒过去的操作,十分无聊也容易出BUG。不过学习了一段时间之后,曙光来了。
第二、PCA。在手册的PCA章节上讲过,PCA的工作模式中可以把PCA配置成 16位软件定时器模式。这个就是曙光啊。PCA作定时器的与专用的定时器相比,需要在中断中累加一下 下一次进入中断的计数值。因为工作性质的原因,使用PCA的输入捕获功能的地方很少,所以理所当然的就把PCA当作定时器使用了。这种模式一直到现在,基本以Timer0作串口分包使用,PCA作软件定时器使用。剩下的定时器就只用作各个串口的波特率发生器。理论上,PCA上还有4个通道,可以作4个定时器的来使用。不过由于自己写了一个软件定时器框架,所以也就用了一个通道。
第三、精度可达15位的增强型PWM。对于寻觅可以用作定时器的资源,我又盯上了PWM。PWM嘛也和时间有关,同时也有到规定计数值的中断。那么理论上用来作定时器也使可以的!事实上经过测试,满足自己的定时需求(因为本身也不需要特别精准,有个毫秒级的差距完全可以使用)而且,这玩意还有8个通道。每个通道还有到达不同计数值的中断,这就很nice了。
emmmm,到此我了解到、测试到的可以用作定时器的硬件资源就是这些了,如果还有拿些奇思妙想可以拿来作定时器的可以在下面讨论讨论哦。那么下面就是吐槽了。
第一、没有独立的波特率发生器,如果每个串口都有自己的波特率发生器的话,那定时器资源一下子就充裕起来了。之前也想过串口统一使用Timer2作波特率发生器,后来这个想法PASS掉了。原因是使用同一个定时器就要波特率是一致的,,在一些特殊的场合可以这么玩儿,但不是一个长久之计。因为会使用多个不同的模组,需要使用不同的波特率。就只有凑巧的情况下可以这么玩儿。第二、精度可达15位的增强型PWM,,哈哈哈,第一眼看过去,感觉哇好厉害耶。然后准备一用,咦,这不就是个15位定时器么,再用作定时器的时候,还没有上面PCA的位数多。。不过毕竟不是人家本身的用法,尺有所短寸有所长嘛。
最后也希望STC越来越好吧,顺便发个贴子赚点经验,哈哈哈
我去,,,这个字体怎么变成这样了.....有大有小的。。只是点了自动排版... 先抑后扬,又有了2次积分,高啊,STC8A8K64D4的定时器:
===17组定时器
16位/24位自动重装载定时器, 5组:
===T0/T1/T2/T3/T4, 5组
===T0/T1是16位长度,T2/T3/T4是24位长度,
15位增强型PWM定时器,8通道:
===PWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7
16位CCP/PCA定时器,4组
===CCP0/CCP1/CCP2/CCP3, 也教 PCA0/PCA1/PCA2/PCA3
不输出就是定时器
必须送个仿真器,STC-USB Link1D 给您
===发这个链接给我们客服
深圳国芯人工智能有限公司-产品_STC8A系列 (stcai.com)
神农鼎 发表于 2023-12-9 19:13
必须送个仿真器,STC-USB Link1D 给您
===发这个链接给我们客服
哇,,太好了正还琢磨怎么弄点芯愿换东西 老板大气
页:
[1]