[STM32F1] STM32CubeMx GPIO口输出

[复制链接]
1064|11
 楼主| averyleigh 发表于 2024-8-31 16:03 | 显示全部楼层 |阅读模式
  stm32用hal库建立工程通用且方便,用的人也越来越多了,正点原子之前也有hal库的书还有例程,但是正点原子hal库的例程是以调用hal库的形式制作的,没有直接从cube的建立工程开始做起,并且在使用的过程中有根据项目更改过库函数。网上STM32Cube的教程也大多是v4、v5版本,和v6相比很多界面和功能有所变化,所以写了这个。文中部分内容参考正点原子开发指南和网上的文章教程。
工作环境:
STM32CubeMXv6
Keil5
        如果仅仅使用GPIO口执行输入输出的操作,那么RCC时钟,晶振,时钟树和中断都是可以不用配置使用默认的,建立工程后左键点击需要打开的IO口后选择GPIO_OUTPUT或GPIO_INPUT。
        然后打开左侧的下拉框System Core,点击GPIO选项;

        点击需要配置的IO口,配置Configuration中的选项:

GPIO_OUTPUT选项
            GPIO output level:GPIO初始输出电平
            GPIO mode:GPIO模式(开漏输出或推挽输出)
            GPIO Pull-up/Pull-down:GPIO上拉/下拉电阻
            Maximum output speed:输出速率
            User Label:用户命名(选填)
GPIO_INPUT选项
            GPIO mode:GPIO模式
            GPIO Pull-up/Pull-down:GPIO上拉/下拉电阻
            User Label:用户命名(选填)
    点击Project Manager页面,输入工程名和工程位置,选择工具链和IDE为MDK-ARM,版本为5.27;
打开左侧Code Generater菜单勾选Generate peripheral initialization as a pair of'.c/.h'file per peripheral;
最后点击右上角的GENERATE CODE按钮后生成代码。

    生成代码后打开工程文件夹,用Keil5打开工程。

        编译,运行

        此时已经可以点亮小灯了。
        HAL_GPIO_WritePin()函数可以控制IO空输出高电平
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);        //PB0 输出低电平HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);                //PB0 输出高电平        HAL_Delay()函数可以延时,单位ms
HAL_Delay(500);                //延时500ms
        通过在主函数的while循环内组合两者,连接小灯,可以达到小灯闪烁的结果
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);        //PB0 输出低电平HAL_Delay(500);                //延时500msHAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);                //PB0 输出高电平HAL_Delay(500);                //延时500ms    此外可以通过反转电平的方式达到相同效果
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);        //PB0 反转输出HAL_Delay(500);                //延时500ms       HAL_GPIO_ReadPin()函数可以读取IO口电平以进行判断
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5) == RESET)         //读取并判断PB5输入的电压是不是低电平

qsrg51 发表于 2024-12-31 23:59 | 显示全部楼层
基于STM32H7系列芯片用EXTI0中断同步触发SPI
公羊子丹 发表于 2025-1-2 07:35 | 显示全部楼层
原子的教程确实不错,但直接从CubeMX入手更直观,适合新手上手!
帛灿灿 发表于 2025-1-2 07:35 | 显示全部楼层
用了CubeMX v6之后才发现,配置GPIO口真的省心,感谢分享!
周半梅 发表于 2025-1-2 07:36 | 显示全部楼层
配置时钟树有时候搞不清楚,直接用默认配置确实方便很多!
童雨竹 发表于 2025-1-2 07:36 | 显示全部楼层
这个帖子对刚接触STM32的小白太友好了,先收藏一波!
万图 发表于 2025-1-2 07:36 | 显示全部楼层
CubeMX v6的界面改版之后确实和以前不一样了,刚开始用有点不习惯。
Wordsworth 发表于 2025-1-2 07:37 | 显示全部楼层
HAL库虽然封装复杂,但配合CubeMX用起来还是挺方便的。
Bblythe 发表于 2025-1-2 07:37 | 显示全部楼层
感谢楼主细心总结,这对习惯用Keil的开发者帮助很大!
Pulitzer 发表于 2025-1-2 07:38 | 显示全部楼层
GPIO简单操作用默认配置完全够用了,这个思路可以省掉不少时间。
Uriah 发表于 2025-1-2 07:38 | 显示全部楼层
正点原子的资料虽然详细,但不够CubeMX友好,还是这种教程更贴合实际!
Clyde011 发表于 2025-1-2 07:38 | 显示全部楼层
一直在用v5,这次跟着楼主试试v6,看看有啥新变化!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

1526

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部