打印
[单片机芯片]

ch565的systick模块的手册在哪里呢,565的手册里没有v4的介绍里面也和程序对不上

[复制链接]
1385|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
延时ms函数,看上去不大对劲

使用特权

评论回复
沙发
gouguoccc| | 2022-5-7 08:16 | 只看该作者
怎么不对劲了?

使用特权

评论回复
板凳
wchtech| | 2022-5-7 09:11 | 只看该作者
根据手册时钟树,SysTick时钟由系统主频8分频获得。
delay初始化函数用主频/8M得到us的计数值。

339856275c68bd5c30.png (280.1 KB )

339856275c68bd5c30.png

使用特权

评论回复
地板
wangshujun|  楼主 | 2022-5-9 09:12 | 只看该作者
第一次延时正常,后续就不对了
应该是启动后不是自动关闭的
问题:
1、cmp是64位的寄存器,运算延时用的32位的,导致可用延时长度比较短,这个大多数遇不到
2、systick的ctrl寄存器启动清零了计数器,但是不会清除比较标志,而比较在完成后,并不会停止,如果前一次是短延时,比如2us的,则下次就直接失效了,在启动之前清一下标志,延时就对了
因为没有这个模块的手册,以上是根据程序猜测的

        uint32_t i;

        SysTick->CTLR = 0;
        i = (uint32_t)n*p_ms;

        SysTick->CMP = i;
        SysTick->CTLR = (1<<8)|(1<<0);

    while((SysTick->CNTFG & (1<<1)) != (1<<1));
    SysTick->CNTFG &= ~(1<<1);

使用特权

评论回复
5
wchtech| | 2022-5-9 11:58 | 只看该作者
SYSTICK相关寄存器说明可以参考CH569手册4.4.2章节:http://www.wch.cn/downloads/CH569DS1_PDF.html

使用特权

评论回复
6
wangshujun|  楼主 | 2022-5-9 22:56 | 只看该作者
找到了,之前看得不够仔细
在这一段的描述中没看出来即使到0后,是否会自动重装
从程序上来看似乎是自动重装的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

508

帖子

3

粉丝