芯片:STM32F407ZG76
1MB flash
安装keil5
创建库函数模板
【1】 创建存放库函数模板的文件夹。名称:库函数模板
【2】 在库函数模板文件夹中创建文件夹User,存放用户程序
【3】 创建文件夹Obj
【4】 创建文件夹Libraries
【5】 在Libraries下创建文件夹CMSIS
【6】 复制STM32F4xx驱动到Libraries下
实验说明
通过按键控制LED灯的开关
实验环境
硬件:
STM32F407-PZ6808L开发板
STM32仿真器
软件:
Winddows7 64位操作系统 内存8GB
Keil5
安装后需要添加Keil.STM32F4xx_DFP.2.7.0.pack
Stm32CubeMx
安装后将STM32Cube_FW_F4_V1.13.0文件夹复制到C: \ Users \ Administrator \ STM32Cube \ Repository文件夹中。
文档:
STM32F407-PZ6808L开发板原理图.pdf
实验现象
按开发板上的K_RIGHT键D2灯亮,按K_DOWN键D2灯灭。
实验步骤
1. 打开STM32F407-PZ6808L开发板原理图
找到LED灯模块
2链接引脚LED2
LED2 低电平灯亮 高电平灯灭
找到LED2 在STM32F407ZGT6核心板的链接引脚
在PDF阅读器上搜索
找到LED2引脚
引脚为PF10
查找按键K_RIGHT和K_DOWN在核心板上的引脚
先查找按键模块
分别对应K1和K2
然后在核心板上查找K1和K2的引脚名称
名称是PE2和PE3
分析:
按下K1则D2灯亮,按下K2则D2灯灭。
K1和K2按下后,引脚是低电平。判断PE2和PE3引脚的信号来确定K1和K2是否按下,若为低电平,在为按下,若为高电平,则为放开。
PE2和PE2引脚为输入类型。
PF10引脚为输出类型
2. 打开STM32CubeMX建立工程
(1) 置类型STM32F407ZGTx LQFP144
(2) 设置引脚类型
Peripherals->SYS->Debug设置为Serial Wire(仿真使用)
注意:一定设置,否则以后不能使用仿真器。
找到PF10,由于是控制LED灯,设置为输出类型(GPIO_Output),同理,设置PE2和PE3类型,为GPIO_Input
(3) 对PE2和PE3mode进行设置
依次选择【Configuration】——GPIO
将GPIO Pull-up/Pull-down设置为Pull-up
(4)设置工程
Project Settings->Project Name设置为KEY
Toolchain /IDE 设置为MDK-ARM V5
通过向导,自动生成初始化代码,然后通过Keil5打开工程
3. 先编译工程
在main.c中添加代码
uint8_t Check_Key()
{
if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_2)==GPIO_PIN_RESET || HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3)==GPIO_PIN_RESET)
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_2)==GPIO_PIN_RESET)
{
return 1;
}
if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3)==GPIO_PIN_RESET)
{
return 2;
}
}
return 0;
}
在main函数中
uint8_t key;
key=Check_Key();
switch(key)
{
case 1:
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET);
break;
case 2:
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);
break;
}
编译
4. 链接仿真器仿真调试
然后按开发板上的复位键,测试。