嵌入式RTOS编程

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);
}
#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值