学习STM32
必备的工具:1.KEIL5/4
2.32开发板
![71f99fc00cd769406f044cc73847ddb2.png](https://i-blog.csdnimg.cn/blog_migrate/105915365ff101e372740a2822de3e91.jpeg)
keil5
![32c6515e5b2c3802a0b78ea7d0b128f7.png](https://i-blog.csdnimg.cn/blog_migrate/8377cff668604047d50c99a6a3a5ac77.jpeg)
开发板
1 GPIO Test( 端口操作实验 )
GPIO 实验是最简单, 也是一般最先开始的一个实验, 他可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上, 从而节省了在搭建过程中所消耗的时间和精力。建议, 当该实验顺利完成后,作为一个模板, 供以后实验使用,确保您可以将精力花费在需要实现的功能上。
关于环境的搭建,您可以参考 《EWARM_STM32_Use_Instructions 》;本实验需要实现:四个 LED 的简单控制。
1.1 硬件设计:
1. 确认硬件连接:
根据开发板原理图,如图,得知:与 LED 相连的有 PB12、 PB13、 PB14、PB15 ;以下就是对这四个引脚的配置,及相关操作;
1.2 软件设计:
//main() 程序开始
1.2.1 头文件:
#include "stm32f10x.h"
#include "main.h"
//#include "k_gpio.h"
//已经转移到
main 函数中;
#define
VECT_TAB_RAM
//选择在
RAM
中调试;
//main() 函数:
1.2.2 系统初始化
SystemInit();
// 选择系统运行时钟,默认是
72MHz ,可以调试跟踪进行修改;
#ifdef
#else
VECT_TAB_RAM //设置仿真调试区域,这里设置成在 // Set the Vector Table base location at 0x20000000 NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); /* VECT_TAB_FLASH */
RAM
中;
· Set the Vector Table base location at 0x08000000 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
1.2.3 GPIO 配置
· 首先,选择 GPIOB 外设时钟;只有选择好时钟后,才可以进行下面的配置;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 配置端口,开始时,不需要知道所有的细节,从字面上理解就 ok; gpio.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; gpio.GPIO_Speed = GPIO_Speed_50MHz;
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &gpio);
GPIO_SetBits(GPIOB, GPIO_Pin_12);
//将端口拉高,灭
LED
灯;
GPIO_SetBits(GPIOB, GPIO_Pin_13);
GPIO_SetBits(GPIOB, GPIO_Pin_14);
GPIO_SetBits(GPIOB, GPIO_Pin_15);
如此, GPIOB 连接 LED 的四个端口都配置好了;
1.2.4 GPIO 操作
While(1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12);
Delay(0xffffff);
G