今日学习STM32F407VET6 ,首先从基本原理图、引脚方面开始做个初步理解并整理:
这里使用的学习开发板是在嘉立创购买的 立创梁山派天空星,芯片是 STM32F407VET6
主要对这个芯片的引脚做一些归纳认识、对开发学习板原理图设计进行认识理解:最后就是尝试点亮一个LED灯
文章提供测试代码讲解、完整工程下载、测试效果图
目录
pack包的安装:
STM32F407VET6引脚GPIO归纳:
GPIO总线挂载:
定时器引脚:
串口引脚:
CAN通信引脚:
SPI通信引脚:
I2C通信引脚:
开发板的基本参数理解:
开发板原理图(部分):
与ST_LINK下载器的连接:
点亮LED代码:
测试效果图:
测试工程与资料手册下载:
pack包的安装:
这一步知识提示大家学习新的单片机型号时别忘记添加新的型号的pack包
一般商家提供的资料中会有个pack包,keil没有添加这个pack的便需要添加,否则无法正常编程
这个直接双击安装就行了:
STM32F407VET6引脚GPIO归纳:
STM32F407VET6 根据STM命名规则可知,共有100个引脚
引脚定义在STM32F407_405英文数据手册英文数据手册的47页
以手册为主、归纳是我自己人工完成的,可能有错误!
GPIO总线挂载:
在使用标准库函数进行编程配置GPIO时,第一步就需要开启对应的GPIO的总线时钟,以下为外设总线以及其相对应的外设:
RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState)
RCC_AHB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState)
RCC_AHB3PeriphClockCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState)
RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
定时器引脚:
其中TIM1和TIM8是高级计时器、TIM2~TIM5是通用计时器
STM32F407的定时器通常连接到特定的GPIO引脚作为输入捕获、输出比较或PWM输出。
例如TIM1可以连接到PA8, PA9, PA10, PA11等引脚。
其他定时器(TIM2, TIM3, TIM4, TIM5, TIM8等)也会连接到不同的GPIO引脚。
CH1 | CH2 | CH3 | CH4 | ETR | BKIN | |
TIM1 | PA7(CH1N) PE8(CH1N) PE9 PB13(CH1N) PA8 | PB0(CH2N) PE10(CH2N) PE11 PB14(CH2N) PA9 | PB1(CH3N) PE12(CH3N) PE13 PB15(CH3N) PA10 | PE14 PA11 | PE7 PA12 | PA6 PE15 PB12 |
TIM2 | PA0 PA5 | PA1 PB3 | PA2 PB10 | PA3 PB11 | PA0 PA5 PA15 | |
TIM3 | PA6 PC6 PB4 | PA7 PC7 PB5 | PB0 PC8 | PB1 PC9 | PD2 | |
TIM4 | PD12 PB6 | PD13 PB7 | PD14 PB8 | PD15 PB9 | PE0 | |
TIM5 | PA0 PH10 | PA1 PH11 | PA2 PH12 | PA3 PI0 | ||
TIM8 | PA5(CH1N) PA7(CH1N) PC6 PH13(CH1N) PI5 | PB0(CH2N) PB14(CH2N) PC7 PH14(CH2N) PI6 | PB1(CH3N) PB15(CH3N) PC8 PH15(CH3N) PI7 | PC9 PI2 | PA0 PI3 | PA6 PI4 |
TIM9 |
PE5\PA2
|
PE6\PA3
| ||||
TIM10 | PF6 PB8 | |||||
TIM11 | PF7 PB9 | |||||
TIM12 | PH6 PB14 | PH9 PB15 | ||||
TIM13 | PF8\PA6 | |||||
TIM14 | PF9\PA7 |
串口引脚:
TX | RX | CTS | RTS | CK | |
USART1 | PA9 PB6 | PA10 PB7 | PA0 PA11 | PA12 | |
USART2 | PA2 PD5 | PA3 PD6 | PD3 | PA1 PD4 | PA4 PD7 |
USART3 | PB10 PD8 PC10 | PB11 PD9 PC11 | PB13 PD11 | PB14 PD12 | PB12 PD10 PC12 |
USART4 | PA0 PC10 | PA1 PC11 | |||
USART5 | PC12 | PD2 | |||
USART6 | PC6 PG14 | PC7 PG9 | PG13 PG15 | PG8 PG12 | PG7 PC8 |
CAN通信引脚:
CAN_RX | CAN_TX | |
CAN1 | PB8 PI9 PA11 PD0 PB8 | PB9 PA12 PD1 PB9 |
CAN2 | PB12 PB5 | PB13 PB6 |
SPI通信引脚:
SCK | MISO | MOSI | NSS | |
SPI1 | PA5 PB3 | PA6 PB4 | PA7 PB5 | PA4 PA15 |
SPI2 | PB10 PB13 PI1 | PC2 PB14 PI2 | PC3 PB15 PI3 | PB12 PI0 |
SPI3 | PC10 PB3 | PC11 PB4 | PC12 PB5 | PA4 PA15 |
I2C通信引脚:
SCL | SDA | SMBA | |
I2C1 | PB6 PB8 | PB7 PB9 | PB5 |
I2C2 | PH4 PB10 | PF0 PH5 PB11 | PF2 PH6 PB12 |
I2C3 | PH7 PA8 | PH8 PC9 | PH9 PA9 |
开发板的基本参数理解:
开发板原理图(部分):
作为笔记,这里贴一些自己以后可能用到的原理图供自己查阅,不是全部......
与ST_LINK下载器的连接:
按照以下方式连接开发板与ST_LINK下载器:
SWO------SWIM
CLK ------SWCLK
DIO ------SWDIO
5V0 ------5.0V
RST ------RST
GND ------GND
在下载程序时 别忘记在魔棒更改选择对应的 debug仿真器:
点亮LED代码:
这代码是立创商家给的例程代码,这里贴出学习使用:
初始化LED端口:
void led_init(void)
{
//开GPIO总线
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//使用结构体初始化GPIO
GPIO_Init(GPIOB, &GPIO_InitStructure);
//GPIO初始化输出0
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
flag = 0;
}
初始化按键端口:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
按键扫描函数:
void key_scan(void)
{
if( SET == GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) )
{
/* 延迟消抖 */
delay_ms(20);
if( flag )
{
GPIO_SetBits(GPIOB, GPIO_Pin_2);
flag = 0;
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_2);
flag = 1;
}
printf("Key Press!!\r\n");
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == SET) // 等待按键松开
{
}
/* 延迟消抖 */
delay_ms(20);
printf("Key Release!!\r\n");
}
}
测试效果图:
没按按键:
按下一次按键:
测试工程与资料手册下载:
https://download.csdn.net/download/qq_64257614/89275988