python网站开发实战,wordpress app 生成6,怎样建设一个公司网站,网站推广软文是什么文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式#xff0c;生成代码四、MDK打开生成项目#xff0c;编写HAL库的按键检测代码五、运行仿真程序#xff0c;调试代码 一、功能需求分析
搭建完成开发STM32开发环境之后#xff0c;开始GPIO… 文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式生成代码四、MDK打开生成项目编写HAL库的按键检测代码五、运行仿真程序调试代码 一、功能需求分析
搭建完成开发STM32开发环境之后开始GPIO的学习。上一节已经测试了使用GPIO的输出模式实现LED点亮的功能。 本次案例实现GPIO的输入检测功能实现按键状态检测通过按键状态控制LED。
需求分析
接线PA6-KEY1、PA7-KEY2、PA0-LED1、PA1-LED2KEY1控制LED1、KEY2控制LED2按键闭合高电平断开低电平LED为低电平驱动方式。
整体的思路是通过输入检测获取开关状态判断开关状态控制输出实现LED的点亮和熄灭。
二、Proteus绘制电路原理图
Proteus绘制需要对基本元器件的名称有一定了解如下方的发光二极管LED、电阻RES可以在网上查找对应的元器件名称列表方便以后绘制。
绘制电路原理图的步骤创建画布》芯片选型及放置》元器件选型及放置》连接电路》修改元器件参数》仿真运行。
下图为所需元器件清单。
下图为电路原理图。
三、STMCubeMX 配置引脚及模式生成代码
接下来根据原理图绘制创建CubeMX项目配置引脚及工作模式生成MDK项目代码。
创建项目在Pinout配置模块点击PA0选择GPIO_Output推挽输出模式同理配置PA1。 点击PA6选择输入GPIO_Input模式同理设置PA7。
在clock单元配置系统时钟为72MHz。 在Project单元填写项目名称、保存路径、IDE和版本。 在 code generator中配置添加库的方式为所需库用户代码在每次项目重新生成时保留。 配置完成通过以上步骤完成了2个LED、2个KEY的引脚的模式配置及时钟配置接下来点击GENERATE生成项目代码。 找到生成路径可以看到项目目录文件。
四、MDK打开生成项目编写HAL库的按键检测代码
从上面步骤中生成了MDK项目。 在MDK-ARM目录中找到项目快捷方式打开项目。 以下是我的项目路径03_KEY\KEY_MDK\KEY\MDK-ARM 找到main.c文件在main函数的while循环中添加如下代码。 此功能代码写在while循环中使用的是查询扫描方式这里我们先实现功能后面会介绍终端扫描方式实现按键检测从而节约CPU的算力。
代码可以分为两部分第一部分是获取PA6引脚状态通过判断控制PA0输出这里涉及的是KEY1和LED1。 第二部分是获取PA7引脚状态通过判断控制PA1输出这里涉及的是KEY2和LED2。 while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///按键KEY1检测key1_stasus HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6);if(key1_stasus 0)HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);else if(key1_stasus 1)HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);//按键KEY2检测key2_stasus HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7);if(key2_stasus 0)HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);else if(key2_stasus 1)HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);}在项目中勾选生成HEX选项HEX文件就是MDK编译生成的十六进制文件作为烧录到开发板的源程序文件使用当然这里我们使用仿真在Proteus中加载HEX即可。
点击编译程序生成HEX文件。在编译窗口显示生成了以下信息则编译成功保证 0 errors再进行下一步。
五、运行仿真程序调试代码
在Proteus中双击芯片选择加载程序路径。 03_KEY\KEY_MDK\KEY\MDK-ARM\KEY 上面是我的项目的HEX文件目录路径。
点击仿真按钮运行程序查看功能执行结果。
可以看到闭合开关控制LED点亮断开开关控制LED熄灭功能正常。
代码链接STM32-03基于HAL库CubeMXMDKProteus输入检测案例按键控制LED
至此我们已经完成了STM32的GPIO输入输出案例的编写后面会给大家介绍更多的功能。