为什么在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);

     
}

文章来自:http://www.cnblogs.com/alongwaytogo/p/5092872.html
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3