打印
[应用相关]

STM32单片机Systick函数的使用方法

[复制链接]
778|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
                                    

        在“嵌入式学习006_Systick使用(一)”中,详细介绍了SysTIck中寄存器的使用方法,用到了很多函数,实际上到了3.5版本的标准固件库中,移除了相关驱动函数,用户必须调用CMSIS.h中定义的函数,其中CMSIS只提供了一个SysTIck设置的函数,替代了STM32原来有的所有的驱动函数,这样做的目的,可能是简化SysTIck 的设置,可是降低了用户对SysTIck的可控性。

        在CMSIS中提供的函数是SysTick_Config(uint32_t ticks); 该函数设置了自动重载入计数器(LOAD)的值,SysTick IRQ的优先级,复位了计数器(VAL)的值,开始计数并打开SysTick IRQ中断。SysTick时钟默认使用系统时钟。

       

        其中这个函数定义在Core_cm3.h中 ,源代码如下所示:

        static __INLINE uint32_t SysTick_Config(uint32_t ticks)

        {

        if (ticks 》 SysTick_LOAD_RELOAD_Msk)return (1);

        SysTick-》LOAD= (ticks & SysTick_LOAD_RELOAD_Msk) - 1;

        NVIC_SetPriority (SysTick_IRQn, (1《《__NVIC_PRIO_BITS) - 1);

        SysTick-》VAL= 0;

        SysTick-》CTRL= SysTick_CTRL_CLKSOURCE_Msk |

        SysTick_CTRL_TICKINT_Msk|

        SysTick_CTRL_ENABLE_Msk;

        return (0);}

        从上面的函数中可以看出,这个函数把Systick的初值,中断优先级,使能中断,开启定时器都完成了。大大简化了程序。

        其中ticks 代表的是初值。例如系统时钟是72Mhz 那么要产生1ms的时基,那么我们可以这样去写。

        SysTick_Config(SystemCoreClock/1000);当然也可以写成:SysTick_Config(72000);

        了解了这些,我们可以用它来做一个简单的延时函数delay_ms(u16 time);

        代码如下:

        void delay_ms(u16 time)

        {

        nTime=time ;/nTime 是个全局变量 可设 extern u16 nTime;/

        while(nTime);

        }

        在中断函数中直接加入nTime--;

        在主函数 初始化过程中 加入SysTick_Config(72000);

               
                                

使用特权

评论回复
沙发
51xlf| | 2020-9-5 17:54 | 只看该作者
systick具体延时时间怎么计算的?

使用特权

评论回复
板凳
i1mcu| | 2020-9-5 17:54 | 只看该作者
怎么开启systick定时器

使用特权

评论回复
地板
pmp| | 2020-9-5 17:54 | 只看该作者
系统定时器systick有什么用

使用特权

评论回复
5
mmbs| | 2020-9-5 17:55 | 只看该作者
为什么systick没有进中断

使用特权

评论回复
6
1988020566| | 2020-9-5 17:55 | 只看该作者
        

使用特权

评论回复
7
xietingfeng| | 2020-9-5 17:55 | 只看该作者
stm32 systick的默认时钟是多少

使用特权

评论回复
8
lzbf| | 2020-9-5 17:56 | 只看该作者
如何设置STM32的SYSTICK的优先级

使用特权

评论回复
9
youtome| | 2020-9-5 17:56 | 只看该作者
stm32中systicks和rtc哪个比较准确

使用特权

评论回复
10
cemaj| | 2020-9-5 17:56 | 只看该作者
stm32 systick需要外部晶振吗

使用特权

评论回复
11
sanfuzi| | 2020-9-5 17:56 | 只看该作者
ucos iii移植stm32的时钟必须用systick么

使用特权

评论回复
12
mmbs| | 2020-9-5 17:56 | 只看该作者
SysTick 的库函数不能使用怎么办?

使用特权

评论回复
13
pmp| | 2020-9-5 17:56 | 只看该作者
设置Systick延时怎么设置  

使用特权

评论回复
14
1988020566| | 2020-9-5 17:56 | 只看该作者
谢谢楼主分享的。      

使用特权

评论回复
15
i1mcu| | 2020-9-5 17:56 | 只看该作者
怎么设置systick  

使用特权

评论回复
16
xietingfeng| | 2020-9-5 17:56 | 只看该作者
stm32 systick 时间可设置吗  

使用特权

评论回复
17
51xlf| | 2020-9-5 17:56 | 只看该作者
stm32中的Systick与delay有什么区别?

使用特权

评论回复
18
cemaj| | 2020-9-5 17:56 | 只看该作者
怎样能重装STM32的SysTick计数器的初值

使用特权

评论回复
19
youtome| | 2020-9-5 17:57 | 只看该作者
Systick延时函数怎么写  

使用特权

评论回复
20
sanfuzi| | 2020-9-5 17:57 | 只看该作者
stm32单片机怎么获取随机数

使用特权

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

本版积分规则

681

主题

1534

帖子

7

粉丝