STM32F103C8移植uCOSIII
一、uCOSIII源码
https://pan.baidu.com/s/1jCoc2sfiij78J0Q-C6ChmA
提取码1111
二、项目导入文件整理
在这个页面建立这两个文件夹,是为了方便后面导入
在uC-BSP新建bsp.c和bsp.h,空文件,等导入之后再加代码将下面文件路径里框住的文件全部复制到上面一个文件夹,app.c里是main函数
HAL库建立工程,测试程序是点亮自带的灯和串口发送信息,所以就改一下USART1的模式和将PC13引脚设置为输出,RCC和SYS与以前一样就行了。
建立工程也和以前一样,仔细点
三、导入文件和增加头函数路径
把这几个文件复制到刚刚建立的项目的这个文件夹里接下来打开keil,点击小方块开始增加item了
点击小方框增加下面这几个分组
BSP选择刚刚复制过去的那个文件夹里的文件,记得下面选择全部文件
CONFIG里的
SOURCE里添加的是这个文件路径,一共有二十个
PORT里添加的文件是这个文件路径下的
CPU这个分组添加的是uC-CPU文件夹里的文件,同时里面ARM-Cortex-M3\RealView里的文件也要添加
和CPU分组有些类似,进去之后的文件也全部要添加,同时Ports\ARM-Cortex-M3\RealView这个路径里的asm文件也要添加
接下来将这些头文件路径全部加入
四、代码改动
将启动文件里这两处的PendSV_Handler和Systick_Handler改为OS_CPU_PendSVHandler和OS_CPU_SysTickHandler
在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)
includes.h里有两处修改
1.在#include <bsp.h> 后面加上
#include “gpio.h”
#include “app_cfg.h”
2.将#include <stm32f10x_lib.h> 改为
#include “stm32f1xx_hal.h”
bsp.c代码
// 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();
MX_GPIO_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. */
DWT_CYCCNT = (CPU_INT32U)0u;
DWT_CR |= (CPU_INT32U)DWT_CR_CYCCNTENA;
cpu_clk_freq_hz = BSP_CPU_ClkFreq();
CPU_TS_TmrFreqSet(cpu_clk_freq_hz