一、本章简介
本章以core-G1【STM32F103C8T8】核心板 呼吸灯实验 之入门系列2工程为例,介绍STM32关于GPIO的配置方法,大家通过控制STM32的GPIO引脚来使RGB灯达到呼吸灯的效果。
二、实验平台
1、硬件:core-G1核心板
2、编译软件:MDK-RAM Plus V5.26.2.0
3、STM32F10X固件库版本:V3.5
4、仿真器:QQ14A编译调试器
三、版权声明
作者:职业劝退师
声明:转载请注明出处。
纠错/业务合作:1911996023@qq.com
本例程开源资料下载地址:
http://www.enmaking.com/material/ma_4HBed59a
core-G1【STM32F103C8T8】核心板购买链接:
QQ14A编译调试器购买链接:
https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-22623360017.13.407d38d5ciC9zV&id=624413749124
四、实验前提
1、在进行本文步骤前,请先阅读以下章节
1)《Cortex-M3权威指南(中文)》的第一章至第五章章节。
2)《STM32中文参考手册_V10》的第八章节。
2、在进行本文步骤前,请先实现以下章节:
1)MDK5的软件安装。安装教程链接如下
http://www.enmaking.com/article/ar_cXHjU6Uj
2)阅读《core-G1【STM32F103C8T8】核心板 跑马灯实验 之入门系列1》文章,链接如下
http://www.enmaking.com/article/ar_TTYB6zjb
五、基础知识
因为人的视觉具有余晖效应,通过改变GPIO的高电平占空比,可以达到改变LED灯亮度的效果,即可让人产生LED在慢慢熄灭或慢慢点亮的视觉效应。
六、硬件原理
1、原理图
2、由上面两图可知
名称 引脚 控制方法
LEDR PB8 高电平灭、低电平亮
LEDB PC13 高电平灭、低电平亮
LEDG PB9 高电平灭、低电平亮
现在我们知道要操作哪些IO口,就可以进行程序编写了。
七、实验步骤
1、编写RGB灯驱动程序。
void LED_Init(void){
GPIO_InitTypeDef GPIO_InitStructure;
RCC->APB2ENR|=1<<3; //使能PORTB时钟
RCC->APB2ENR|=1<<4; //使能PORTC时钟
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//最大输出速度为50MZH
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIOB->ODR|=3<<8; //PB8 PB9 输出高
GPIOC->ODR|=1<<13; //PC13 输出高
}
2、添加有关操作RGB灯的GPIO口宏定义,方便操作和调动。
#define LEDB PCout(13)#define LEDG PBout(9)#define LEDR PBout(8)
3、将驱动程序添加到自己的工程中
4、编写自己的业务代码
int main(void){
u16 i=0,j=2000;
delay_init(72);
LED_Init();while (1)
{for(i=10;i//B->G
{
LEDB=1;
LEDG=0;
delay_us(i);
LEDB=0;
LEDG=1;
delay_us(j-i);
}
LEDB=1;
LEDG=0;
delay_ms(1000);
for(i=j-10;i>10;i--)//G->R
{
LEDG=0;
LEDR=1;
delay_us(i);
LEDG=1;
LEDR=0;
delay_us(j-i);
}
LEDR=0;
LEDG=1;
delay_ms(1000);
for(i=10;i//RB
{
LEDB=0;
LEDR=1;
delay_us(i);
LEDB=1;
LEDR=0;
delay_us(j-i);
}
LEDB=0;
LEDR=1;
delay_ms(1000);
}
}
最后编译并将程序烧录到开发版中。
八、注意事项
暂无
九、实验结果
上电后任意时间内总有两个灯在亮,而且一个灯在慢慢变亮,另外一个灯则慢慢变暗。RGB灯整体显示的颜色也在变化。
![c1dc02fdeb6108ebcf29bde8f8d6cf59.png](https://i-blog.csdnimg.cn/blog_migrate/2b8fcac7f9e8353b90cc98676b5c01d8.png)