stm32f103 单片机(一)第一个工程
先看一个简单的
系统上已经安装好了keil5 与ARM包,也下载好了STM32固件库
新建一个工程,添加三个组
加入如下文件
在options 里作如下配置
准备在main.c 中写下第一个实验,点亮一个小灯。
像51单片机一样直接对引脚赋值是行不通的
在stm32f中文手册中找到这样一段话
在使用一个外设之前,必须打开外设的时钟
可以看到GPIO都在APB2中
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO还需要配置工作模式与最大输出速度
/**
* @brief Configuration Mode enumeration
*/
typedef enum
{ GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
/**
* @brief Output Maximum frequency selection
*/
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
这样写下如下代码
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef gpioInitVar;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
gpioInitVar.GPIO_Mode = GPIO_Mode_Out_PP;
gpioInitVar.GPIO_Pin = GPIO_Pin_1;
gpioInitVar.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &gpioInitVar);
GPIO_ResetBits(GPIOA,GPIO_Pin_1);
while (1)
{
}
}