uc/os3多任务与实时日历
一、STM32F103C8T6移植uCOS
1.uCOS下载
STM32F107uCOS样例下载
下载完成后文件如下:
2.文件导入
1)项目创建
使用STM32CUBEMX创建空项目
2)项目管理
1、在新建项目中新建文件夹UCOSIII
2、将官网样例文件中的uC-CPU、uC-LIB、uCOS-III移动到新建的文件夹UCOSIII中,并新建文件夹uCOS-BSP、uCOS-CONFIG文件
3,文件添加
新建Groups:uCOS-BSP、uCOS-CPU、uCOS-LIB、uCOS-Core、uCOS-Port、uCOS-Config
1、uCOS-BSP中添加文件
2、uCOS-CPU中添加文件
3、uCOS-LIB中添加文件
4、uCOS-Core中添加文件
5、uCOS-Port中添加文件
6、uCOS-Config中添加文件
4,头文件路径添加
3.文件修改
改
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
为
改
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
为
2、app_cfg.h
改
#define APP_CFG_SERIAL_EN DEF_ENABLED
为
#define APP_CFG_SERIAL_EN DEF_DISABLED
改
#define APP_TRACE BSP_Ser_Printf
为
#define APP_TRACE (void)
3、includes.h
第一处修改:
添加相关头文件
#include <bsp.h>
修改为
#include <bsp.h>
#include “gpio.h”
#include “app_cfg.h”
#include "app.h"
第二处修改:
添加HAL 库
#include <stm32f10x_lib.h>
修改为
#include "stm32f1xx_hal.h"
4、 bsp.c和bsp.h
//bsp.c
#include "includes.h"
#define DWT_CR *(CPU_REG32 *)0xE0001000
#define DWT_CYCCNT *(CPU_REG32 *)0xE0001004
#define DEM_CR *(CPU_REG32 *)0xE000EDFC
#define DBGMCU_CR *(CPU_REG32 *)0xE0042004
#define DEM_CR_TRCENA (1 << 24)
#define DWT_CR_CYCCNTENA (1 << 0)
CPU_INT32U BSP_CPU_ClkFreq (void)
{
return HAL_RCC_GetHCLKFreq();
}
void BSP_Tick_Init(void)
{
CPU_INT32U cpu_clk_freq;
CPU_INT32U cnts;
cpu_clk_freq = BSP_CPU_ClkFreq();
#if(OS_VERSION>=3000u)
cnts = cpu_clk_freq/(CPU_INT32U)OSCfg_TickRate_Hz;
#else
cnts = cpu_clk_freq/(CPU_INT32U)OS_TICKS_PER_SEC;
#endif
OS_CPU_SysTickInit(cnts);
}
void BSP_Init(void)
{
BSP_Tick_Init();
}
#if (CPU_CFG_TS_TMR_EN == DEF_ENABLED)
void CPU_TS_TmrInit (void)
{
CPU_INT32U cpu_clk_freq_hz;
DEM_CR |= (CPU_INT32U)DEM_CR_TRCENA; /* Enable Cortex-M3's DWT CYCCNT reg.