×
单片机 > 单片机程序设计 > 详情

ucos-II移植到stm32上关于systick部分的修改

发布时间:2020-08-31 发布时间:
|

systick初始化一般放在创建第一个任务里,具体说是在OSInit(); 之后的第一个任务开始处,在早期版本的库文件中包含stm32f10x_systick.c和stm32f10x_systick.h两个文件,


因此我们只要在第一个任务开始处,调用下面这个函数即可。SysTick_Config里面所调用的函数就定义在stm32f10x_systick.c中。


void  SysTick_Config(void)

{

    RCC_ClocksTypeDef  rcc_clocks;

    INT32U         cnts;



    RCC_GetClocksFreq(&rcc_clocks);


    cnts = (INT32U)rcc_clocks.HCLK_Frequency/OS_TICKS_PER_SEC;


    SysTick_SetReload(cnts);

    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

    SysTick_CounterCmd(SysTick_Counter_Enable);

    SysTick_ITConfig(ENABLE);

}


 


但是后来的版本,stm32f10x_systick.c和stm32f10x_systick.h两个文件都不存在了,固件库中core_cm3.h里面有一个关于SysTick定时器的函数  static __INLINE uint32_t SysTick_Config(uint32_t ticks);采用下面的方法,



static void Systick_init(void); //函数声明 

  

static void Systick_init(void)  

{  

        RCC_ClocksTypeDef  rcc_clocks;  

        RCC_GetClocksFreq(&rcc_clocks);   //调用标准库函数,获取系统时钟。 

        SysTick_Config(rcc_clocks.HCLK_Frequency / OS_TICKS_PER_SEC); //初始化并使能 SysTick

       //OS_TICKS_PER_SEC是在os_cfg.h中定义的 

}


 


在第一个任务开始处,调用Systick_init(); 实现滴答时钟的初始化。

关键字:ucos-II  移植到  stm32  systick 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向