一、标准库模板分析
1、模板目录结构
2、模板目录说明
- User:用户写的一些代码;
- StdPeriph_Driver:标准库外设驱动代码;
- CMSIS:ARM 内核相关代码;
- STM32_EVAL:基于STM32相关官方开发板的一些代码;
- MDK-ARM:一些汇编启动文件。
3、Option for Target(魔术棒)配置
- Target
Use Micro LIB具体作用未知,但是有时候不勾选,会出现一些问题
2. User
此处在做一些指令,编译前做什么编译后做什么等等
- C/C++
1处是一些宏定义,2处是优化等级,优化等级不能太高,3处是头文件目录
- 1处的宏定义相当于如下代码:
#define USE_STDPERIPH_DRIVER
#define STM32F10X_HD_VL
#define USE_STM32100E_EVAL
以上的宏在"stm32f10x.h"头文件里判断,选择需要编译的模块。
- 2处是优化等级,优化等级不要太高,太高有可能编译有问题。
- 3处是头文件包含的目录。
二、使用标准库创建工程
1.建立工程
- 工程目录
- 将库函数导入工程中
2.点亮LED代码
#include "stm32f10x.h"
void gpio_init(void)
{
RCC->APB2ENR = 0x00000008; //PortB的RCC使能
//PB8~PB15配置成输出模式
GPIOB->CRH = 0x77777777; //推挽输出模式,输出速率50MHz
GPIOB->ODR = 0x0000FF00; //输出0,点亮LED
}
void led_on(void)
{
GPIOB->BRR = 0x0000F000;
}
void led_off(void)
{
GPIOB->BSRR = 0x0000F000;
}
void delay(void)
{
unsigned int i, j;
for (i=0; i<3000; i++)
for (j=0; j<2000; j++);
}
int main(void)
{
gpio_init();
while(1)
{
led_on();
delay();
led_off();
delay();
}
return 0;
}