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

stm32点亮led灯

[复制链接]
攻城狮Melo 发布时间:2022-11-8 22:37
学习32第一个程序就是点亮led灯。本人用的是野火的指南者开发板。先上电路图。. c: G; Q9 d6 R: ]" M; x9 [* R9 k

0 J' k  j7 y& b% Q3 W& J' L 7814e00c31aa44e2b5d9d6f7bafbd4d7.png ' b0 b+ v1 E7 w0 W4 ~# m3 u

  S: P) ~( X8 g& b8 ^如图所示,为led模块电路图,由图可知,此模块为共阳极。只需将引脚变成低电平即可使led灯亮。此次代码点亮B0。代码如下。$ Q0 v+ g. f1 y: h8 P( `% Y
) q6 H8 O1 X! w* q4 P( Y
stm32要进行引脚初始化,led.c文件中定义如下:0 a* E4 r0 E3 v: W- @

! p# i# Y' R4 ^6 {, n! U6 z) F$ o9 ]
  1. #include "led.h"
    4 D6 ~, {: e" @7 x
  2. void LED_G_Init(void)//初始化灯8 \1 O& q8 u3 R
  3. {
    . |. N" i: b& u% ]
  4.         GPIO_InitTypeDef GPIO_InitStruct;//结构图定义$ s2 b$ v- I1 P1 r) c! o
  5.         RCC_APB2PeriphClockCmd(LED_G_CLK,ENABLE);//总线2时钟开关
    ) ^7 K0 `: V( {7 v9 D. `
  6.         GPIO_InitStruct.GPIO_Pin = LED_G_PIN;//引脚% g$ i8 ?# P$ S2 \+ F+ e
  7.   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//模式为推挽输出
    ( Z/ _# k% g* n5 l
  8.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置频率为50HZ& i7 s& d- W- g: @6 u
  9.         GPIO_Init(LED_G_PORT,  &GPIO_InitStruct);//GPIO初始化
    $ g9 [* Q4 E2 x0 E( ^
  10. 0 J3 y8 s- W1 s( n5 i
  11. }
复制代码

( U4 j) r% w! P, Y+ L5 O每使用一个引脚都需要将GPIO进行初始化。2 h$ O! u1 t9 P
( X/ _2 `( B/ h2 T6 p3 |6 u
头文件代码如下:- P+ w7 r0 [6 B
7 c+ Q- Q+ \% m7 l, A: L* ?/ K5 G
  1. #ifndef _DSP_LED_H  R, A1 U- A8 M- v8 I# P! n2 L
  2. #define _DSP_LED_H5 F; u. X# L. B/ x4 p% B0 ?

  3. 2 ^' U/ y: [9 I7 c, ^
  4. #include "stm32f10x.h"
    5 t3 t) i: G- E2 T

  5. ! p, a, }+ \. i- F% S
  6. //定义led灯端口+ m; X2 a0 f( `
  7. #define LED_G_PIN        GPIO_Pin_0% L9 t. X2 S7 s) g
  8. #define LED_G_PORT        GPIOB
    " e! \5 l4 j% F
  9. #define LED_G_CLK        RCC_APB2Periph_GPIOB+ i7 L: t' b* f) Q

  10.   X8 s9 x3 t4 {: b$ e5 v' n3 T
  11. //初始化灯7 Y' h5 h6 i( X5 E
  12. void LED_G_Init(void);
    : g# c8 M* E% |

  13. ' V3 b+ X( u0 q9 v8 `" m6 Z
  14. #endif /*_DSP_LED_H*/
复制代码

/ T0 y3 V2 B" ]4 \! V上面就已经将led灯初始化完成了,现在编写主函数:
1 B8 G4 f( w0 y; m$ H; C
1 r% L: ]+ I1 w8 _( d2 W. ]. B
  1. int main(void)3 a. j( S; }- G; j/ H: c3 S$ `
  2. {6 ]+ k8 z+ ]( Y' s

  3. : U9 Z4 X. \/ O0 f. E
  4.         LED_G_Init();//初始化调用( D, G) f" S: }/ W7 r; x+ [, ]
  5.         GPIO_SetBits(GPIOB, GPIO_Pin_0);//因为初始化使GPIO会初始化为低电平,所以如果不是点评增高,led灯会直接变亮。所以调用此函数,使其电平变高。
    ; M- u, O' Z9 Z* f$ K6 A; ~5 l
  6.         GPIO_ResetBits(GPIOB, GPIO_Pin_0);//电平为低,点亮灯,这两个函数都是在32库里面的,可直接调用。3 b+ x; V( ^7 Y& l3 v+ H5 s
  7. ( V' R# |, V9 R! O2 |, ~- n
  8. }
复制代码
+ Q: C% N3 _& }, s8 F6 B
以上就可点亮一个灯了。虽然不是很难,但刚开始学习使用时因为接触到寄存器的配置,比51还是难很多的,新手还是会迷。. s8 x! \: G2 ^
————————————————
1 ?6 ?+ c- x  O( b) c版权声明:小柳很菜
$ ]: q# n( @$ A* X# b& R$ A% i! t1 a9 a; [) V, W
收藏 评论0 发布时间:2022-11-8 22:37

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版