ch565的systick模块的手册在哪里呢,565的手册里没有v4的介绍里面也和程序对不上
延时ms函数,看上去不大对劲 怎么不对劲了? 根据手册时钟树,SysTick时钟由系统主频8分频获得。delay初始化函数用主频/8M得到us的计数值。 第一次延时正常,后续就不对了
应该是启动后不是自动关闭的
问题:
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); SYSTICK相关寄存器说明可以参考CH569手册4.4.2章节:http://www.wch.cn/downloads/CH569DS1_PDF.html 找到了,之前看得不够仔细
在这一段的描述中没看出来即使到0后,是否会自动重装
从程序上来看似乎是自动重装的
页:
[1]