STM32F407控制RGB代码解析
作为一名嵌入式新手,就从简单的程序开始写起吧。来日方长,不慌不忙。
RGB,即Red、Green、Blue 3种颜色的灯,根据亮度不同、颜色的混合,最多可以实现256种颜色。
STM32中需要自己动手编程的文件主要是C文件、头文件和main主函数。
1、C文件的程序
C文件中存放的是源程序文件,以我个人对C文件程序的理解是,它就像是一个生产零件的工厂,在这里我们会写下各种函数,就相当于生产出各种零件,每种零件都有自己的作用,即每个函数都有自己的作用,把这些零件组装起来就是成品,而我们把这些函数在main函数程序中组装起来,就可以实现我们想要的功能。
void LED_GPIO_Config(void) //自己写个函数名,能看出来这个函数是干嘛的
{
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体,这个结构体在固件库中已经写好
RCC_AHB1PeriphClockCmd(LED1_GPIO_CLK|LED2_GPIO_CLK|LED3_GPIO_CLK, ENABLE); //打开3个灯的GPIO时钟
GPIO_InitStructure.GPIO_Pin = LED1_PIN; //LED1的引脚,即红灯的引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //输出类型为推挽输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //配置为电阻上拉
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //输出速度为2MHz
GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure); //把以上配置好的参数写进寄存器里,这就是调用固件
//库函数色好处,不用操作最底层的寄存器
GPIO_InitStructure.GPIO_Pin = LED2_PIN; //前面的配置都不变,只需要改下引脚,这个是绿灯
GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure); //把以上配置好的参数写进寄存器里
GPIO_InitStructure.GPIO_Pin = LED3_PIN; //前面的配置都不变,只需要改下引脚,这个是蓝灯
GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure); //把以上配置好的参数写进寄存器里
}
2、头文件里
头文件里放的是各种函数名字,就比如上述C文件的函数名void LED_GPIO_Config(void) 就需要放到头文件里进行声明,以便调用。
我想强调的是,一般写程序都是把关于硬件的部分(引脚)进行宏定义操作,这样会很方便程序移植,如下图:这些一般都是在头文件里写的。
3、main主函数
它就像是组装函数的车间,把我们在C文件里写的函数名字在这调用就可以了,只是名字哦。
Jhw 2020.3.6