本帖最后由 warship 于 2018-7-29 22:30 编辑
有不少初学者对delay_init()函数犯晕,但每一个程序都绕不开,由于原子的例程里因为想兼容操作系统,搞了很多的宏条件,也难怪初学者难以读懂,
其实不光是初学者,说实在的,我没有用到OS,看着这个函数也头大(其实也是没有完全搞懂)
这两天看了一下,撇开对OS的支持(我想绝大多数的STM32初学者都不会上来就用OS的),
这个函数可以简单到只有两行。如下即可:
void delay_init(void)
{
SysTick->LOAD=9000-1; //装载值设定为9*1000-1=8999 即每ms中断一次
SysTick->CTRL|=3; //开启SYSTICK并允许中断
}
怎么样,简单吧?
你用它替换掉原子的函数,我保证能用。
楼下我会详细解释一下.
哦,对了,
忘记提示一句: 使用库函数编程的同学,也是一样可用的。
直接替换掉原函数就可以了。
其实使用库函数编程还是有优势的,看到寄存器编的代码可以直接拿来就用,
而使用寄存器编程的同学,临时想调用库函数就真的不是那么容易了,哈哈。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
顺便问个问题,上面写到9MHZ,计数9000次为1ms,那我如果要想做个1ms的标志位,就比如定义一个变量1msflag吧,这个我该怎么处理好呢?
上面已经定义systick每ms中断一次了,你在中断服务程序里让这个变量等于1不就行了么
一周热门 更多>