目录
一、MDK-ARM环境介绍及安装
二、STM32Cube简介及安装
STM32CubeMX安装
加载固件库
编辑
三、 STM32F0存储器映射
四、STM32启动文件分析
略
五、GPIO的基本概念及寄存器介绍1
1、GPIO接口简介
2、GPIO功能复用
3、GPIO寄存器介绍
GPIO工作原理框图:
五、点亮LED寄存器版(STM32F051K8)
1、硬件原理图分析
2、 使能GPIO的时钟
3、编程步骤分析
六、点亮LED库函数版(STM32F051K8)
2、CubeMX的配置
3、初始化关键代码分析
4、控制LED关键代码分析
七、初识人机交互--按键
1、硬件原理图分析
作业:拍摄stm32流水灯视频
一、MDK-ARM环境介绍及安装
略
二、STM32Cube简介及安装
直观的选择STM32微控制器
微控制器图形化配置
自动处理引脚冲突
动态设置确定的时钟树
可以动态确定参数设置的外围和中间件模式和初始化
功耗预测
C代码工程生成器覆盖了STM32微控制器初始化编译软件,如IAR,KEIL,GCC可以独立使用,作为Eclipse插件使用
STM32CubeMX安装
安装JAVA运行环境,JavaSetup8u151.exe
解压stm32cubemx.zip,安装SetupSTM32CubeMX-4.22.0.exe,最好不要有中文路径
解压stm32cube_fw_f0_v180.zip到STM32CubeMX的安装路径中
加载固件库
三、 STM32F0存储器映射
略
四、STM32启动文件分析
略
五、GPIO的基本概念及寄存器介绍1
1、GPIO接口简介
通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,实现对电路板上LED、数码管、按键等常用设备控制驱动,也可以作为串口的数据收发管脚,或AD的接口等复用功能使用。因此其作用和功能是非常重要的。
2、GPIO功能复用
注:查看 《 STM32F0数据手册》
3、GPIO寄存器介绍
STM32F051-GPIO常用寄存器
4个32位配置寄存器 GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR GPIOx_PUPDR
2个32位数据寄存器 GPIOx_IDR 、GPIOx_ODR
1 个32 位置位 / 复位寄存器 GPIOx_BSRR
2 个 32 位复用功能配置寄存器 GPIOx_AFRH 、GPIOx_AFRL
注:每一组GPIO端口都有一套上述的寄存器去配置它自己的功能
GPIO寄存器MODER:
GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..D,F) 偏移地址: 0x00 复位值:
● 0x2800 0000 端口 A ● 0x0000 0000 其他口
GPIO寄存器OTYPER:
GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..D,F) 偏移地址: 0x04 复位值: 0x0000 0000
GPIO工作原理框图:
GPIO寄存器OSPEEDR:
GPIO 口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..D,F) 偏移地址: 0x08 复位值: 0x0000 0000
GPIO寄存器PUPDR:
GPIO 口上拉 / 下拉寄存器 (GPIOx_PUPDR) (x = A..D,F) 偏移地址: 0x0C 复位值: ● 0x2400 0000 端口 A ● 0x0000 0000 其它端口
GPIO寄存器IDR:
GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..D,F) 偏移地址: 0x10 复位值: 0x0000 XXXX (X 表明不定 )
GPIO寄存器ODR:
GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..D,F) 偏移地址: 0x14 复位值: 0x0000 0000
GPIO寄存器BSRR:
GPIO 端口置位 / 复位寄存器 (GPIOx_BSRR) (x = A..D,F) 偏移地址: 0x18 复位值: 0x0000 0000
GPIO寄存器AFRL:
GPIO 复用功能低位寄存器 (GPIOx_AFRL) (x = A..B) 偏移地址: 0x20 复位值: 0x0000 0000
GPIO寄存器AFRH:
GPIO 复用功能低位寄存器 (GPIOx_AFRH) (x = A..B) 偏移地址: 0x24 复位值: 0x0000 0000
五、点亮LED寄存器版(STM32F051K8)
1、硬件原理图分析
2、 使能GPIO的时钟
AHB 外部时钟使能寄存器 (RCC_AHBENR)
偏移地址 : 0x14 复位值 : 0x0000 0014 访问:无等待周期,字,半字和字节访问
3、编程步骤分析
开启GPIOB的时钟 RCC->AHBENR |= 1<<18;
配置PB0 PB1 PB2接口
GPIOB->MODER |= (1<<0)|(1<<2)|(1<<4); //设置PB0, PB1, PB2为通用输出模式 GPIOB->OTYPER = 0x0; //设置PB0, PB1, PB2为通用推挽输出 GPIOB->OSPEEDR = 0x0; //设置输出速度为低速
控制LED;
GPIOB->BSRR = (1<<16)|(1<<17)|(1<<18); //复位PB0, PB1, PB2 既点亮LED GPIOB->BSRR = (1<<0)|(1<<1)|(1<<2); //置位PB0, PB1, PB2 既熄灭LED
六、点亮LED库函数版(STM32F051K8)
1、硬件原理图
2、CubeMX的配置
3、初始化关键代码分析
GPIOB初始化
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE(); //使能GPIOB的时钟
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2; //初始化对象为0, 1, 2号管脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //模式为推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL; //没有上拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; //低速
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); //配置好后开始初始化
}
4、控制LED关键代码分析
复位PB0, PB1, PB2 既点亮LED
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_RESET);
置位PB0, PB1, PB2 既熄灭LED
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);
七、初识人机交互--按键
1、硬件原理图分析