工程
开发环境的使用-以点亮 LED灯为例
1、拷贝一个工程模板到相应文件夹。
2、在工程文件夹内几个文件夹:User、Project、Doc、Drivers、Libraries,如下图所示。
文件夹 | 说明 |
---|---|
Doc | 说明书,程序功能、版本、修改记录 |
Drivers | 各个接口的初始化文件及头文件、启动代码 |
Libraries | 库函数及核函数 |
Project | 工程项目名称、输出 |
User | 主程序及应用程序 |
启动代码是一段和硬件相关的汇编代码。是必不可少的!启动代码主要作用如下:
- 1)堆栈(SP)的初始化;
- 2)初始化程序计数器(PC);
- 3)设置向量表异常事件的入口地址;
- 4)调用main函数。
ST公司提供了3个启动文件给我们,分别用于不同容量的STM32芯片,这三个文件是:
文件 | 适用范围 |
---|---|
startup_stm32f10x_ld.s | ld.s适用于小容量产品; |
startup_stm32f10x_md.s | md.s适用于中等容量产品; |
startup_stm32f10x_hd.s | hd.s适用于大容量产品; |
这里的容量是指FLASH 的大小。
判断方法如下:
小容量:FLASH≤32K
中容量: 64K≤FLASH≤128K
大容量:256K≤FLASH
Proteus提供的CM3内核的STM32系列单片机有STM32F103R6,其FLASH容量为32KB,属于小容量产品,所以选择startup_stm32f10x_ld.s 作为启动文件。
创建工程(示例)
使用Keil。
最上方选项栏里选择工程(project)选择新的工程。
选择一个路径创建一个文件夹,此处的文件夹名为test。
选择你的内核。
点击ok。
ok。
这样你就会得到。
添加工程
此处我就不再自己创建新的工程,而是采用现成的工程来演示。
将所需要的工程拷贝到一个路经合适的位置,点击下面的图标打开。
这样你就能得到:
接下来选择任意一个文件夹右键。
你会看到:
选择 Manage Project Items…
这样你就可以管理你的文件和文件夹,你可以选择上面的选项来新建文件夹或者添加新文件或删除它们。
编写程序
以点亮 LED 灯为例,如图所示。
由图可以看出, LED 分别连接 MCU 的 PC0 引脚。在 I/O 引脚为低电平时 LED 灯点亮。
首先编写 LED 头文件,以宏定义定义 LED 的相关参数,命名为 bsp_led.h,
代码如下:
#ifndef __BSP_LED_H
#define __BSP_LED_H
#include "stm32f10x.h"
/// LED 硬件配置
#define LED_NUM 1 ///< 设置 LED 的数量, 该驱动最多允许 16 个 LED 灯
#define LED_LEVEL 0 ///< 0, 低电平点亮 LED. 1, 高电平点亮 LED
#define LED0_PORT GPIOC /* GPIO 端口 */
#define LED0_CLK RCC_APB2Periph_GPIOC /* GPIO 端口时钟 */