你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407控制RGB灯

[复制链接]
STMCU小助手 发布时间:2021-7-23 15:20
RGB,即Red、Green、Blue 3种颜色的灯,根据亮度不同、颜色的混合,最多可以实现256种颜色。# X$ K& r- V/ U4 g8 D/ `
' [8 J& N. L9 `7 r& J% |4 @: ~

, k5 x- u( Z& g. U' ASTM32中需要自己动手编程的文件主要是C文件、头文件和main主函数。4 J: J$ `0 L3 q6 c

2 ]) ]% T! F6 |* i; L0 R& q: m: P
' ~' D8 m* S. P
1、C文件的程序- W# L! t6 h! o$ {" O' \$ U
C文件中存放的是源程序文件,以我个人对C文件程序的理解是,它就像是一个生产零件的工厂,在这里我们会写下各种函数,就相当于生产出各种零件,每种零件都有自己的作用,即每个函数都有自己的作用,把这些零件组装起来就是成品,而我们把这些函数在main函数程序中组装起来,就可以实现我们想要的功能。
* p4 i* F) a6 b* D) |# q7 z6 S( m9 ?3 E/ _
- H9 ^; {+ {! n+ U9 S3 |
void LED_GPIO_Config(void) //自己写个函数名,能看出来这个函数是干嘛的
( Z) c! A$ m# x1 \) f0 w) W3 J3 C
  1. <font face="Arial" size="3"> GPIO_InitTypeDef GPIO_InitStructure;              //定义GPIO结构体,这个结构体在固件库中已经写好
    # p3 F1 B1 g9 h: ~3 y

  2. 6 _/ p* D7 h6 R0 G
  3.         RCC_AHB1PeriphClockCmd(LED1_GPIO_CLK|LED2_GPIO_CLK|LED3_GPIO_CLK, ENABLE); //打开3个灯的GPIO时钟
    9 r( m# h* U8 H% W( U( @$ G
  4.                                                                                                            / Y+ _  J* d5 a0 D3 J" x4 l
  5.         GPIO_InitStructure.GPIO_Pin = LED1_PIN;                  //LED1的引脚,即红灯的引脚  q- E9 l7 s. H" l7 S/ [
  6.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;     //输出模式: x8 P) Y( E9 k* b. H
  7.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    //输出类型为推挽输出
    7 h/ G( Z7 B1 Y7 v
  8.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;      //配置为电阻上拉0 p8 F( U1 q1 ~8 g4 Y! b
  9.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  //输出速度为2MHz1 L! M) W1 j6 B3 \" W/ `
  10.     GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);          //把以上配置好的参数写进寄存器里,这就是调用固件
    $ S5 Q+ U* x( ?1 j5 H
  11.                                                       //库函数色好处,不用操作最底层的寄存器1 b/ E. d2 d8 |2 j$ O4 \, o
  12.                                                                                                                    ( ?4 l5 w- M! T0 S* T
  13.         GPIO_InitStructure.GPIO_Pin = LED2_PIN;                  //前面的配置都不变,只需要改下引脚,这个是绿灯$ s2 p3 f0 b7 t3 V% Z- m$ ]+ I
  14.     GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);   //把以上配置好的参数写进寄存器里
    & q% Y+ p6 K% l2 q
  15.                                                                                                                   
    " w4 X+ C/ v2 @' l! c
  16.         GPIO_InitStructure.GPIO_Pin = LED3_PIN;                  //前面的配置都不变,只需要改下引脚,这个是蓝灯
    3 }1 p- Q6 t# W+ S! y
  17.     GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure);          //把以上配置好的参数写进寄存器里- \1 I' o+ s( _
  18. </font>
复制代码
) e( Z# f) X/ o) D5 u
2、头文件里/ T% T" p1 U5 A8 w
头文件里放的是各种函数名字,就比如上述C文件的函数名void LED_GPIO_Config(void) 就需要放到头文件里进行声明,以便调用。  {4 O( q: u# _9 j4 y' D
我想强调的是,一般写程序都是把关于硬件的部分(引脚)进行宏定义操作,这样会很方便程序移植,如下图:这些一般都是在头文件里写的。) ~, ?: U' L0 p7 x: R) {  Y1 y: J

2 ?. l* V) }* v 1.png 0 \2 V. Z& \- ^' D, b, R
+ z- m/ a% k2 T7 {
$ q: O; E) t; U
3、main主函数
" `0 L$ p4 z& b  I; A! ]它就像是组装函数的车间,把我们在C文件里写的函数名字在这调用就可以了,只是名字哦。" B8 W* X" }2 _! u
- W$ Y- z- L' F3 F; F
  1. <font face="Arial" size="3">                                                                                  Jhw  2020.3.6</font>
复制代码
# |8 C' u/ T% p1 s

/ j9 \% H% ]0 k6 f, }& I
0 ~  O4 t0 a' T8 |# T) k

8 w3 n8 }8 B7 g' e5 O
. m7 S" b# R$ w/ u; f$ _
赞 收藏 评论0 发布时间:2021-7-23 15:20

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版