GD32单片机定时器居然是16位的,不明白。

[复制链接]
732|20
 楼主 | 2019-5-31 15:51 | 显示全部楼层 |阅读模式
本帖最后由 dxfshsh 于 2019-5-31 15:53 编辑

看了一下手册,发现在GD中的定时器全都是16位的,非常失望,32位单片机做32位定时器很难吗?

使用特权

评论回复

评论

zeshoufx 2019-6-1 20:48 回复TA
407等就有两个32位的通用定时器,,, 
| 2019-5-31 17:31 | 显示全部楼层
定时器之间是可以互联的,用2个16位定时器就可以组成一个32位定时器,所以不是很难,是没有必要

使用特权

评论回复
| 2019-6-1 15:22 | 显示全部楼层
主要实际应用中,几乎没有应用需要啊。

使用特权

评论回复
 楼主 | 2019-6-2 23:32 | 显示全部楼层
我是从NXP转过来的,NXP的定时器都是32位的,我的应用也是按32位设计的,16位真的不够用呀,如果将两个16位串接,可不可以构成一个32位定时器呢?
请用过GD32的朋友指点一下,谢谢!  如果串接构成一个32位的定时器,那么问题又来了,我无法用单条指令读取这个32位数,需要用多条指令拼接,这里会有问题的。

使用特权

评论回复
| 2019-6-3 08:53 | 显示全部楼层
gd32f407等都有两个32位的

使用特权

评论回复
 楼主 | 2019-6-3 19:33 | 显示全部楼层
本帖最后由 dxfshsh 于 2019-6-3 19:35 编辑
zeshoufx 发表于 2019-6-3 08:53
gd32f407等都有两个32位的

是这样的,我们用NXP的lpc1752开发了一款支持TTCANopen的USB转CAN模块,里面用到了32位定时器,由于1752不支持最新的CAN-FD,看到GD32E103单片机上有,就想移植过来,您说的GD32F407好像不支持CAN-FD吧?好像目前只有GD32E103系列支持CAN-FD,而该系列的定时器偏偏又都是16位的!

使用特权

评论回复
| 2019-6-3 20:19 | 显示全部楼层
dxfshsh 发表于 2019-6-3 19:33
是这样的,我们用NXP的lpc1752开发了一款支持TTCANopen的USB转CAN模块,里面用到了32位定时器,由于1752不 ...

定时器是干什么的?可不可以把定时器频率设置低一些

使用特权

评论回复
| 2019-6-12 14:43 | 显示全部楼层
16位也不用失望啊

使用特权

评论回复
| 2019-6-12 14:48 | 显示全部楼层
两个定时器串联不就可以了吗

使用特权

评论回复
| 2019-6-12 15:10 | 显示全部楼层
可以串联 就是麻烦点

使用特权

评论回复
| 2019-6-12 15:15 | 显示全部楼层
既然决定用了 那就别悲愤了 还是想办法解决问题吧

使用特权

评论回复
| 2019-6-16 20:44 | 显示全部楼层
16b预分频,16b计数器,8b后分频,已经38位了,还不够?那就再级联,拼接成32位的。要瞬间读出,也没问题!用一个事件(UG)去抓取两个拼接的32b计数器,保证精确,准确,不失步。

使用特权

评论回复
| 2019-6-19 11:19 | 显示全部楼层
直接进行级联不就成了吗

使用特权

评论回复
 楼主 | 2019-7-17 22:33 | 显示全部楼层
非常感谢大家的积极回复,用两个定时器链接构成一个32位的计数器,貌似可行,但是有一个缺陷,就是我不能使用一条指令将这个32位数读出来,需求使用多条读取指令,这样就存在一个小概率事件,就是当我读完一个16位计数器后,发生了“进位”,这样再读第二个16位计数器,拼接成32位数会出错,当然我们可以使用更多的代码进行进位检测,更正错误。这个真的比直接使用32位计数器来的复杂麻烦的多!!!

使用特权

评论回复
 楼主 | 2019-7-17 22:34 | 显示全部楼层
非常感谢大家的积极回复,用两个定时器链接构成一个32位的计数器,貌似可行,但是有一个缺陷,就是我不能使用一条指令将这个32位数读出来,需求使用多条读取指令,这样就存在一个小概率事件,就是当我读完一个16位计数器后,发生了“进位”,这样再读第二个16位计数器,拼接成32位数会出错,当然我们可以使用更多的代码进行进位检测,更正错误。这个真的比直接使用32位计数器来的复杂麻烦的多!!!

使用特权

评论回复
| 2019-7-18 07:00 | 显示全部楼层
楼主要是有空,讲解下为什么 CAN_FD 需要32位定时器,做CAN波特率自适应辅助?

使用特权

评论回复
| 2019-7-18 09:46 | 显示全部楼层
dxfshsh 发表于 2019-7-17 22:34
非常感谢大家的积极回复,用两个定时器链接构成一个32位的计数器,貌似可行,但是有一个缺陷,就是我不能使 ...

uint16_t  high = read_high16();
for (;;) {
    uint16_t low = read_low16();
    uint16_t high_again = read_high16();
    if (high_again == high)
          return (high << 16) + low;
    high = high_again;
}

使用特权

评论回复
| 2019-7-18 10:54 | 显示全部楼层
本公司有大量原装GD32系列芯片 出售有需要可以联系13286363809肖先生

使用特权

评论回复
| 2019-7-21 13:01 | 显示全部楼层
都是16位定时器芯片设计者可以复制粘贴,而使用到32位开发者麻烦些了。

使用特权

评论回复
 楼主 | 2019-7-27 10:49 | 显示全部楼层
lvben5d 发表于 2019-7-18 07:00
楼主要是有空,讲解下为什么 CAN_FD 需要32位定时器,做CAN波特率自适应辅助? ...

是做系统心跳使用

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表