STM32F103C8T6 标准库工程模板创建
下载库
可以根据自己 MCU 的型号去 STM32 官网下载相应的库,网址:STM32 官网标准库下载地址
STM32F103 库的下载地址如下:STM32F10x标准外设库
我使用最新版本 3.6.0,下载下来解压后是:STM32F10x_StdPeriph_Lib_V3.6.0
建立 Keil-MDK 模板工程
创建文件夹
创建一个模板工程的文件夹,如图:
App: app 文件。主要的编程工作在这里展开。
Core: 存放 ARM 内核代码
Doc: 存放文档
Peripheral: 存放标准外设库源码
Project: 存放 Keil 工程文件
Start: 存放启动文件
User: 存放用户文件。main.c 文件在这里。
其中,Core、Peripheral、Start 文件夹下的文件全部从下载的标准库中复制,User 文件夹下处 main.c 外皆复制自下载的标准库。
复制标准库
复制内核源文件:
复制启动文件:
复制器件支持文件:
创建工程
打开Keil-MDK,在刚刚创建的 Project 文件夹下建立一个新的工程:
设计如下分组:
工程设置
从官网下载的标准外设库不支持armcc6编译器,所以设置为默认的armcc5编译器:
Output 勾选 Hex:
添加预处理宏定义:USE_STDPERIPH_DRIVER STM32F10X_MD, 添加头文件路径
设置烧录工具:
编写 main.c
#include <stm32f10x.h>
/*默认系统时钟,可以大致精确到ms级延时*/
void delay_ms(uint16_t time)
{
u16 i=0;
while (time--) {
i=8000;
while(i--) ;
}
}
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //启动GPIO的时钟
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //选模式推挽输出
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; //哪个引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //引脚反应速度
GPIO_Init(GPIOC, &GPIO_InitStructure); //完成初始化
}
int main()
{
LED_Init();
while(1) {
delay_ms(100); //delay_ms(100);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
delay_ms(100); //delay_ms(100);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}
}
验证
按键盘上的 F7 快捷键进行编译:
按键盘上的 F8 键下载:
加作者薇信:jiyuyun18 交流电子技术,留言:CSDN 嵌入式,加入嵌入式技术交流群