为什么在ucos向stm32f103移植时说os

it2022-05-05  151

我在看os_cpu_c.c代码时对下面这段话困惑了半天总是在百度的帮助下找到了答案

/*  申明几个函数,这里要注意最后三个函数需要注释掉,为什么呢?    OS_CPU_SysTickHandler()定义在os_cpu_c.c中,是SysTick中断的中断处理函数,    而stm32f10x_it.c,中已经有该中断函数的定义SysTick_Handler(),这里也就    不需要了,是不是很奇怪官方移植版为什么会这样弄吧,后面我会解释的。    OS_CPU_SysTickInit()定义在os_cpu_c.c中,用于初始化SysTick定时器,它    依赖于OS_CPU_SysTickClkFreq(),而此函数我们自己会实现,所以注释掉。    OS_CPU_SysTickClkFreq()定义在BSP.C (Micrium\Software\EvalBoards)中,    而本文移植中并未用到BSP.C,后面我们会自己实现,因此可以把它注释掉。*/

之所以不在用OS_CPU_SysTickInit()等函数是因为在stm32f将自身固件库升级后

在cmss的core_cm3.h文件中提供了一个更加更加便捷的函数SysTick_Config(uint32_t ticks)

用于设置SysTick.

在bsp.c中添加下面的函数来替换OS_CPU_SysTickInit()和其相关函数

void SysTick_Init(void){    /* SystemFrequency / 1000    1ms中断一次    最大值     * SystemFrequency / 100     10ms中断一次     * SystemFrequency / 10 100ms中断一次       最小值     */          //st3.0 用 SystemFrequency而st3.5 用 SystemCoreClock       SysTick_Config(SystemCoreClock /OS_TICKS_PER_SEC);      }

转载于:https://www.cnblogs.com/alongwaytogo/p/5092872.html


最新回复(0)