
一、利用STM32CUBEMX生成工程框架 1.选择MCU ![]() ![]() 2.配置时钟 ![]() 3.配置GPIO ![]() 4. 配置Project Manager ![]() ![]() 二、利用STM32CUBEMX生成初始化代码文件 5.打开工程文件 ![]() ![]() 6.编译Keil代码--生成的框架是否有错误 ![]() 7.按模块添加代码 在gpio.c中添加代码 ![]() 在gpio.h中声明函数 ![]() 在main.c中调用函数 ![]() 8.配置Options ![]() ![]() ![]() 三、测试代码 9.下载运行 ![]() 10.实验结果 (1)LED_TEST函数的结果 ![]() (2)LED_Disp函数的结果 首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。 ![]() 四、函数学习 想要学习哪个函数就直接右击去看函数定义即可。 ![]() (1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平 参数解释: GPIO_TypeDef *GPIOx:x从A-G GPIO_Pin:可选项如下 ![]() 例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平 (2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入 参数解释:前两个参数解释同上 第三个参数:GPIO_PinState PinState取值如下: GPIO_PIN_RESET 低电平 GPIO_PIN_SET 高电平 五、问题总结 在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢? 解释: 首先看一下LED灯的原理: ![]() LED:当阳极电平>阴极电平时,LED导通发光 当PC8为高电平时灯才会亮, 当PC8为低电平时灯就不会亮 ![]() 当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制 ![]() ![]() 因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态 ———————————————— 版权声明:想要优秀点儿 |