STM32-UCOS
### STM32与uCOS-II移植详解 #### 一、STM32标准外设库简介 STM32标准外设库是由STMicroelectronics官方提供的针对STM32微控制器的驱动库,它为开发者提供了丰富的外设驱动接口,极大地方便了用户在STM32平台上的开发工作。该库不仅包括了基本的外设驱动,如GPIO、USART等,还包含了高级功能的支持,例如ADC、DAC、定时器等。 #### 二、STM32标准外设库的下载与使用 1. **下载最新版本**:我们需要从STMicroelectronics官方网站下载最新的STM32标准外设库。截至撰写本文时,最新版本为V3.5.0。 2. **解压缩文件**:解压下载的ZIP文件后,可以看到如下文件结构: - `STM32F10x_StdPeriph_Lib_V3.5.0`:包含库的主要部分。 - `_htmresc`:HTML资源文件。 - `Libraries`:库的源代码。 - `Project`:STM32各个外设的使用示例和工程模板。 - `Utilities`:使用ST公司评估板的示例。 - `Release_Notes.html`:发布说明文档。 - `stm32f10x_stdperiph_lib_um.chm`:帮助文档,介绍了如何使用标准外设库。 #### 三、工程目录结构设计 对于复杂的项目,良好的目录结构是非常重要的。建议采用以下目录结构: - `template` - `doc`:存放项目相关文档。 - `src`:源代码文件。 - 每个功能模块一个子文件夹。 - `include`:公共头文件。 - `output` - `obj`:编译后的对象文件。 - `list`:列表文件。 #### 四、库代码整理 为了方便管理和使用,需要对STM32标准外设库中的代码进行整理: 1. **创建`libstm32`目录**:在`src`目录下新建`libstm32`。 2. **复制核心驱动文件**:将`Libraries\STM32F10x_StdPeriph_Driver`下的所有内容拷贝至`libstm32`。 3. **创建`cmsis`子目录**:在`libstm32`下新建`cmsis`。 4. **复制CMSIS核心支持文件**:将`Libraries\CMSIS\CM3\CoreSupport`下的`core_cm3.c`和`core_cm3.h`拷贝至`cmsis`。 5. **复制STM32F10x设备支持文件**:将`Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x`下的`stm32f10x.h`、`system_stm32f10x.c`和`system_stm32f10x.h`拷贝至`cmsis`。 6. **复制启动文件**:根据所选芯片类型,将对应启动文件拷贝至`cmsis`。例如,对于大容量型STM32芯片,应拷贝`startup_stm32f10x_hd.s`。 #### 五、库文件简要说明 1. **STM32F10x_StdPeriph_Driver**:该目录包含STM32的各外设模块驱动代码。 2. **misc.h/c**:与CM3内核相关的NVIC和SysTick驱动代码。 3. **CMSIS**:Cortex微控制器软件接口标准,为Cortex系列处理器提供硬件抽象层。 4. **core_cm3.c/h**:CM3内核支撑文件,用于配置内核寄存器。 5. **stm32f10x.h**:标准外设库的入口头文件。 6. **system_stm32f10x.c/h**:用于初始化STM32芯片,配置PLL、系统时钟和内置Flash接口。 7. **startup_stm32f10x_hd.s**:大容量型STM32芯片的启动文件。 #### 六、建立工程 1. **选择IDE**:使用Keil MDK (本例使用4.12版) 创建新工程。 2. **创建工程**:在`template`目录下创建名为`template`的工程。 3. **选择芯片型号**:选择STM32系列的芯片(本例选择STM32F101RC)。 4. **避免重复拷贝启动代码**:当提示是否拷贝启动代码到工程文件夹时选择“No”,因为标准外设库已经包含启动代码。 通过以上步骤,我们可以成功地在STM32上移植uCOS-II操作系统,并为后续的开发打下了坚实的基础。此过程非常适合初学者参考学习。