为什么在ucos向stm32f103移植时说os_cpu_c.c中有三个函数如OS_CPU_SysTickInit()需要注释掉
我在看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);
}