杭州品牌网站开发,图片编辑在线使用,凯叔讲故事网站谁做的,wordpress apache伪静态文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式#xff0c;生成代码四、MDK打开生成项目#xff0c;编写HAL库的GPIO输出代码五、运行仿真程序#xff0c;调试代码 一、功能需求分析
在完成开发环境搭建之后#xff0c;开始使用STM32GP… 文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式生成代码四、MDK打开生成项目编写HAL库的GPIO输出代码五、运行仿真程序调试代码 一、功能需求分析
在完成开发环境搭建之后开始使用STM32GPIO的功能可以看到上次测试案例LED点亮实验在其基础上调用HAL库的读写引脚反转引脚状态的API函数实现流水灯效果。
需求分析
使用PA0-PA3引脚分别连接LED0-3实现回马枪样式的流水灯效果首先LED0-3依次点亮然后LED3-0逆序点亮LED使用低电平驱动方式为了演示效果四个LED选取不同的颜色。
二、Proteus绘制电路原理图
绘制电路原理图的步骤创建画布》芯片选型及放置》元器件选型及放置》连接电路》修改元器件参数》仿真运行。
下图为绘制LED所需元器件清单。
下图为按键检测案例的电路原理图。 注意此处的LED为低电平驱动方式即引脚输出0点亮输出1熄灭。
三、STMCubeMX 配置引脚及模式生成代码
接下来根据原理图绘制创建CubeMX项目配置引脚及工作模式生成MDK项目代码。
创建项目在Pinout配置模块点击PA0选择GPIO_Output推挽输出模式同理配置PA1。
按照上述步骤依次配置PA1-PA3引脚为GPIO_Output。
在clock单元配置系统时钟为72MHz。 在Project单元填写项目名称、保存路径、IDE和版本。 在 code generator中配置添加库的方式为所需库用户代码在每次项目重新生成时保留。 配置完成通过以上步骤完成了2个LED引脚的模式配置及时钟配置接下来点击GENERATE生成项目代码。 找到生成路径可以看到项目目录文件。
四、MDK打开生成项目编写HAL库的GPIO输出代码
在编写代码之前简单介绍会用到的几个API小函数 写引脚 这个函数很常用写引脚有三个参数分别是GPIO的名称、引脚端口号、引脚状态。 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);GPIO_PIN_RESET 清零写0 GPIO_PIN_SET 置位写1
结合电路赋值GPIO_PIN_RESET LED点亮赋值GPIO_PIN_SET LED熄灭。
延时函数 使用延时函数实现时间间隔控制完成不同流速的流水灯效果。这里需要一个参数单位是毫秒。
从上面步骤中生成了MDK项目。 在MDK-ARM目录中找到项目快捷方式打开项目。 找到main.c文件在main函数的while循环中添加LED流水灯代码。 这里分析流水灯用以上介绍的两个API函数来实现可以分成8个状态
第一个状态是PA0点亮PA1-PA3熄灭 然后是PA1点亮其余灯熄灭 然后是PA2点亮其余灯熄灭 最后是PA3点亮其余灯熄灭。 以上四个状态是正向逐个点亮一次然后反向点亮逐个点亮回到最初PA0点亮。
第一个状态PA0点亮的实现代码如下写在main函数的while循环中。 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);HAL_Delay(20);根据第一个状态代码完成其他7个状态相信你可以很轻松的做到 ^ _ ^。
在项目中勾选生成HEX选项HEX文件就是MDK编译生成的十六进制文件作为烧录到开发板的源程序文件使用当然这里我们使用仿真在Proteus中加载HEX即可。
点击编译程序生成HEX文件。在编译窗口显示生成了以下信息则编译成功保证 0 errors再进行下一步。
五、运行仿真程序调试代码
在Proteus中双击芯片选择加载程序路径。 02_RunningWater\RunningWater_MDK\RunningWater\MDK-ARM\RunningWater 上面是我的项目的HEX文件目录路径。
点击仿真按钮运行程序查看功能执行结果。
可以看到四个LED往返点亮功能正常。
代码链接STM32-02基于HAL库CubeMXMDKProteusGPIO输出案例LED流水灯
至此我们已经完成了STM32的GPIO输出案例的编写后面会给大家介绍输入检测案例。