目录
一、建立stm32 hal库工程
1.文件配置
配
设置PC13为GPIO_Output用于点亮LED灯
设置串口USART1
设置工程
点击生成代码,并在Keil中打开该工程。
在main函数中的while循环里添加语句
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(500);
}
/* USER CODE END 3 */
二 uCOSIII的移植
1.准备源码
进入官网下载:Micrium Software and Documentation - Silicon Labs
将uCOS相关文件复制到HAL工程的MDK-ARM文件夹下
3.开始
添加文件
点击 ,然后添加
添加以下文件,在MDK-ARM\uC-CPU和\MDK-ARM\uC-CPU\ARM-Cortex-M3\RealView
然后添加,在\MDK-ARM\uC-LIB和\MDK-ARM\uC-LIB\Ports\ARM-Cortex-M3\RealView
添加,在MDK-ARM\uCOS-III\Ports\ARM-Cortex-M3\Generic\RealView
添加,在\MDK-ARM\uCOS-III\Source
添加,在文件\MDK-ARM\uC-CONFIG
添加,在文件\MDK-ARM\uC-BSP
为bsp.c和bsp.h添加代码
bsp.h
#ifndef __BSP_H__
#define __BSP_H__
#include "stm32f1xx_hal.h"
void BSP_Init(void);
#endif
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)D