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

stm32点亮led灯

[复制链接]
攻城狮Melo 发布时间:2022-11-8 22:37
学习32第一个程序就是点亮led灯。本人用的是野火的指南者开发板。先上电路图。0 L: s6 R# N7 Z' Q

* H2 C; B6 s9 L$ Z! S 7814e00c31aa44e2b5d9d6f7bafbd4d7.png
7 G# i, [3 G& Q5 D- h; B' g5 \  A0 G4 P. l6 [# K6 v) F7 H/ b
如图所示,为led模块电路图,由图可知,此模块为共阳极。只需将引脚变成低电平即可使led灯亮。此次代码点亮B0。代码如下。8 e5 x' r) g8 ~+ k/ y+ W

$ C" `! K5 P/ p. kstm32要进行引脚初始化,led.c文件中定义如下:3 x6 ^, F* r: K# ]5 P
' Q# x$ U$ p! J) @. E5 a* U( r
  1. #include "led.h"8 M; P2 m6 ]2 f$ C4 C+ e
  2. void LED_G_Init(void)//初始化灯/ `& s; l, ?- M! ]4 }* P( F3 Y! P
  3. {
    * b9 ^; U" c3 q
  4.         GPIO_InitTypeDef GPIO_InitStruct;//结构图定义4 t; M2 \2 W! a! V+ n6 @9 c
  5.         RCC_APB2PeriphClockCmd(LED_G_CLK,ENABLE);//总线2时钟开关7 r, `4 K* J4 y" u8 o$ t
  6.         GPIO_InitStruct.GPIO_Pin = LED_G_PIN;//引脚
    3 n- O+ s7 {: j, V- r- g
  7.   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//模式为推挽输出$ |# r4 D+ `7 a! `, m5 |
  8.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置频率为50HZ$ G& t8 |; L+ D3 o4 }- o* ?* o
  9.         GPIO_Init(LED_G_PORT,  &GPIO_InitStruct);//GPIO初始化0 x! L/ z) t- P: s

  10. 3 j: k( R! K& b; O, t
  11. }
复制代码

4 \2 B6 G$ w* M- J) V每使用一个引脚都需要将GPIO进行初始化。
6 E, S& N. d/ m" m3 J1 f, H; C8 V: k5 x% A! N
头文件代码如下:
* k. H& a* J4 {& c
1 F5 B2 L% A. ?0 {" h/ E
  1. #ifndef _DSP_LED_H
    ) Z& a( _) V- u2 X8 S. }
  2. #define _DSP_LED_H
    * y# a- k" p; i8 a- }: n

  3. $ Q% R4 L( z: J) z. U
  4. #include "stm32f10x.h"
    2 Y" J' v$ ^1 a( V
  5. # S$ D  {& \, ?1 e& r: `8 c3 S3 ~
  6. //定义led灯端口1 _, h& P1 r7 R. A% e$ P* }
  7. #define LED_G_PIN        GPIO_Pin_0: q9 \' q  Y8 u  h  S0 V
  8. #define LED_G_PORT        GPIOB
    , h. R: _8 u6 L8 `' L6 g
  9. #define LED_G_CLK        RCC_APB2Periph_GPIOB
    ( l. M- B1 a8 @  |6 O$ P

  10. 6 {. J; m) ?7 o) T9 q
  11. //初始化灯
    . H" i4 s' }8 s; E
  12. void LED_G_Init(void);9 O. d) @! Y1 E; d/ _- k' }
  13. $ ^% q, ^. `. k( z& Q- R
  14. #endif /*_DSP_LED_H*/
复制代码
7 N' R" W% _( T* n3 i4 r5 S1 t/ n
上面就已经将led灯初始化完成了,现在编写主函数:
( j  U! V7 Z5 X6 e- J9 H& [& k$ ?
  1. int main(void)! [9 A# |; G* d7 X% |  i3 N7 ~! Q
  2. {
    6 L# U1 c3 |9 Z% M: q

  3. 2 E2 q7 N/ U- [+ U1 c
  4.         LED_G_Init();//初始化调用
    % O0 Y$ {( L# Q- D2 W
  5.         GPIO_SetBits(GPIOB, GPIO_Pin_0);//因为初始化使GPIO会初始化为低电平,所以如果不是点评增高,led灯会直接变亮。所以调用此函数,使其电平变高。
    ! G: q9 A- {3 z
  6.         GPIO_ResetBits(GPIOB, GPIO_Pin_0);//电平为低,点亮灯,这两个函数都是在32库里面的,可直接调用。4 {$ X' Q1 y$ {; k

  7. * e" w" B9 {8 W2 `! H
  8. }
复制代码

# d2 e/ Z0 |& I" w- O  F以上就可点亮一个灯了。虽然不是很难,但刚开始学习使用时因为接触到寄存器的配置,比51还是难很多的,新手还是会迷。2 Q7 k+ N1 I% W8 d. @% W6 T3 ?
————————————————
/ j* o: L( y* ]* w6 @版权声明:小柳很菜
2 {# C! q) L) Z/ x* F* G$ B6 E8 ]' h$ o$ O' {
赞 收藏 评论0 发布时间:2022-11-8 22:37

举报

0个回答

所属标签

相似技术帖

官网相关资源

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