使用软件STM32CubeMAX和Keil5,以STM32G030C8的PB0引脚的LED灯为例。将引脚设置为高电平输出,外接低电平可使导通。
![](https://i-blog.csdnimg.cn/blog_migrate/3bd8e3859030591dd49c2b08f023bd81.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1a3dd7d545eccd2f0e29506c26b08668.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f116248e31fd31a488b5d65b86224c3e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5cd00d242f2ea715e781527a12a63244.png)
![](https://i-blog.csdnimg.cn/blog_migrate/715d60a845942770ca3f1cdb7c292f55.png)
生成keil5文件后进入其中,可以找到调用gpio的函数。
![](https://i-blog.csdnimg.cn/blog_migrate/58ec85397152db67022684ca464dfc1c.png)
找到要使用的函数配置参数
方法一:
函数原型
(1)HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
功能:写输出数据(高低电平)
参数:GPIOx 填使用的GPIO组(GPIOB) GPIO_Pin 使用了哪个引脚(GPIO_PIN_0)
PinState 输出数据(高低1 或者0 GPIO_PIN_RESET 0 GPIO_PIN_SET 1)
(2)HAL_Delay()//延时函数参数填延时时间,毫秒级延时
![](https://i-blog.csdnimg.cn/blog_migrate/6449eaea3ddf440472f91a2577426631.png)
代码如下:
while (1)
{ HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,0);
//输出高电平,引脚写入低电平,导通灯亮
HAL_Delay(300);//延时300毫秒
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,1);
//输出高电平,引脚写入高电平,无压差,灯不导通灭
HAL_Delay(300);
}
方法二:
函数原型
HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
功能:IO口输出状态翻转
参数:GPIOx 填使用的GPIO组(GPIOB) GPIO_Pin 使用了哪个引脚(GPIO_PIN_0)
![](https://i-blog.csdnimg.cn/blog_migrate/74d94f987988108931a224d38f684f0b.png)
代码如下
while (1)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);//电平反转,控制是否导通
HAL_Delay(300);
}