打印
[STM32F1]

STM32CubeMx GPIO口输出

[复制链接]
174|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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输入的电压是不是低电平

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

1258

帖子

3

粉丝