![bf27e9591b6505fe8099f98711e4f9c6.png](https://i-blog.csdnimg.cn/blog_migrate/e985f28b21164988b4db70de14bc99e6.png)
![3a9c0218da3365b71f4b4d4f5f78b35b.png](https://i-blog.csdnimg.cn/blog_migrate/0a23be9fdc5dd18da97db3c35b19a51a.png)
寻求更好的阅读体验,请点击阅读原文移步:Mculover666的个人博客。
1. 准备工作
硬件准备
首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):
![ac4bc77725667e0265b16e641db58446.png](https://i-blog.csdnimg.cn/blog_migrate/dc436602bdc14eb444b9011aae1d8b54.jpeg)
软件准备
需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码。
2.生成MDK工程 — 初始化GPIO为输入
选择芯片型号
打开STM32CubeMX,打开MCU选择器:
![0bce6e8d574c8b97a820df6dbed33ef4.png](https://i-blog.csdnimg.cn/blog_migrate/c3910c7a474804e2fece8922137f875a.jpeg)
搜索并选中芯片
STM32L431RCT6
:
![dc1c339e064d5739c2c32d1da6ae0ecd.png](https://i-blog.csdnimg.cn/blog_migrate/eaa71ab1e2d3e3c92ddd5a48aea816fb.jpeg)
配置时钟源
如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
如果使用默认内部时钟(HSI),这一步可以略过;
这里我都使用外部时钟:
![d79637a476f72da441ab53e34202df0f.png](https://i-blog.csdnimg.cn/blog_migrate/f108c6aefa37537e484a55c86c9835af.jpeg)
配置LED的GPIO引脚
查看小熊派开发板的原理图,如下:
![8e2a334bb14e3c15f87522ac31395cac.png](https://i-blog.csdnimg.cn/blog_migrate/1d33c3a6ea8f5d7be4f4eefcfc0d4069.png)
所以接下来我们选择配置PC13
引脚:
![f8da1b65a241af230fddea723bb30ac3.png](https://i-blog.csdnimg.cn/blog_migrate/1d4dcbfed7cf3efff089335e50768321.jpeg)
设置用户标签为LED:
![68e7281a898a0439cb457a718ac12462.png](https://i-blog.csdnimg.cn/blog_migrate/eac8253241844030c92a3a1fd7d8eeb2.jpeg)
配置按键的GPIO引脚
在原理图上如下:
![686ec4c6a5972553493095022c4881d2.png](https://i-blog.csdnimg.cn/blog_migrate/ddc27e3198c92985532bc89adcd1fd53.png)
所以接下来我们选择配置
PB2
引脚和
PB3
引脚:
![a21a87aa49d99f402c64b44e3a1fb31c.png](https://i-blog.csdnimg.cn/blog_migrate/d5c07f4da0f0a2e649116c325aafc125.png)
因为没有设置硬件上拉,所以我们配置开启上拉电阻,并设置用户标签为
KEY1
和
KEY2
:
![fe85da4b3b7e4b874b9d4475b8cfae29.png](https://i-blog.csdnimg.cn/blog_migrate/7a2b153053b1d54b5ad75a0b7da69dcc.png)
配置时钟树
STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:
![3e1657e7ef6368c937f151652c3403ca.png](https://i-blog.csdnimg.cn/blog_migrate/77b4c9a91187a4844c992d03b81fc43e.jpeg)
生成工程设置
![6ef2c9a89e05d6d8aa5d601eb8079eff.png](https://i-blog.csdnimg.cn/blog_migrate/078a7f6af47ddbf785737383df006324.png)
代码生成设置
最后设置生成独立的初始化文件:
![1f61703e6b52add8090d54a5e97b9868.png](https://i-blog.csdnimg.cn/blog_migrate/b3f4b7901777ca7350fb29787dc9f40f.png)
生成代码
点击GENERATE CODE
即可生成MDK-V5工程:
![e4a6258ffe63cb0a95cdf701590814bd.png](https://i-blog.csdnimg.cn/blog_migrate/756dda90caf94471863f252c2a75cf2e.png)
3. 在MDK中编写、编译、下载用户代码
在main.c
中的main函数中编写简单的用户代码:
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
/* USER CODE BEGIN 3 */
if(0 == HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
}
if(0 == HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin))
{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
}
}
/* USER CODE END 3 */
}
然后编译整个工程:
![1298ff9ed021a31a5b8d7ff417cb8bcd.png](https://i-blog.csdnimg.cn/blog_migrate/1fe76a8530390ec12d86260f40444085.png)
最后进行下载设置:
![1bad98ec0a868f0bc54f260cac30adde.png](https://i-blog.csdnimg.cn/blog_migrate/ba594bd5ecbe506685313c96c4f06a29.png)
![4ae932564f02829300b2c5f850595b5f.png](https://i-blog.csdnimg.cn/blog_migrate/ba8c6eb2aab60fc8060e673b0fa37371.png)
最后点击下载即可:
![aff05796242334cf88259693b39223c8.png](https://i-blog.csdnimg.cn/blog_migrate/a35a280cccc22c76456a42e3f908692f.png)
实验现象如下:
上电复位时LED处于熄灭状态;
按下KEY1,LED点亮;
按下KEY2,LED熄灭;
至此,我们已经学会了如何使用STM32CubeMX快速生成MDK的工程,以及如何使用 STM32CubeMX初始化GPIO进行按键检测,下一节讲述如何配置NVIC使用外部中断检测按键。
![9e4068f5c649cd748bbb0312bec5fee1.gif](https://i-blog.csdnimg.cn/blog_migrate/11317aecc9c74a32d3e4e59964e32c34.gif)