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

【经验分享】STM32L476G-Discovery 上手写程序

[复制链接]
STMCU小助手 发布时间:2022-5-27 20:12
Hello Light

, j6 j! c7 A5 c( h) q7 s! I/ s9 N
到这里为止,你应该已经配置好了开发板的驱动、开发软件,和STM32CubeMX。下面我们可以正式开始写程序了。好像所有的STM32教程都是以点灯范例作为入门第一篇教程的,所以,就如同Hello Word一样,我也来加入到点灯入门的队伍中来。接下来,将通过STM32CubeX快速创建项目,并编写代码实现LED灯的点亮。

! [! V$ R2 v  {# }, g0 B/ `
  • 创建项目
    STM32CubeMX的方便之一,就是为我们提供了该公司旗下所有类型的芯片,在所有开发平台上对应的默认程序。其中包含了各种设备的驱动准备等程序,开发者只需要关注自己的代码即可。非常适合初学者。

    ! c: ^6 J7 V7 ]
    其中STM32CubeMX后,我们会看到欢迎界面。其中包含Open Project和New Project。我们现在要建立新的项目。因此果断选择New Project。由于我们选择的是官方开发板,因此可以直接针对开发板进行选择。点击创建项目界面中的Board Selecter,进入开发板选择模式。

    7 y/ U1 d! _2 `$ X
    R0]HUZ~TFJ{{RU$K98TUJ.png
    5 _' E. t8 j0 J# }4 f# b3 A3 Z5 o5 H
    如上图所示,依次选择STMicroesectronics,Discovery,STM32L4(和你手中的开发板型号一致)。在下方筛选列表中,双击选择对应的芯片型号,我的芯片是STM32L476。
    5 K0 [- i! N" `8 [
    双击选择芯片型号后,进入如下图所示的界面。我们只需要通过Project->Generate Code来生成本开发板的标准项目代码即可。

    ' T" L- E+ T* x  ?
    RTWJH5KX$R8UVI2)QBPX}4O.png
    9 R, S/ p6 T8 J' S1 h9 ]
    点击Project菜单,并选择Generate Code,进入项目代码生成界面。

    0 _* N( d; ]6 |9 y: B& c
    * C3 a+ a9 e0 r) v* e0 n
    输入项目名(第一行),选择项目保存目录(第二行),然后在第四行IDE选择中,选择自己使用的开发工具。由于我使用的是MDK5.0,因此,如下图所示进行了选择。点击OK即可。
    8 z! d8 y% m+ p" Q( B
    VAH{__IPW_)[KNYUZ4GR50U.png
  • 打开项目并输入代码
    在硬盘中,找到刚才生成的代码,在MDK-ARM目录中,双击uvprojx文件,打开MDK。然后在项目目录中的Inc目录,将main.h拖进MDK中打开。并编辑代码。
    " D, W* O9 Y+ \6 S7 g1 E
    我们需要在这里定义一个控制LED的宏。如下图所示:
    HF[XQ_}RUCQ%2P35{DSO0.png
    代码如下:
    + g+ V* t8 a" v( W7 H( @/ C
    STM32CubeMX已经为我们生成好了对开发板进行初始化的代码,并做好了
    /********************************/
    #ifndef    __LED_H
    #define    __LED_H
    #define    ON   1
    #define    OFF  0
    #define    LED(STA)     (STA)?HAL_GPIO_WritePin(GPIOB, LD_R_Pin|M3V3_REG_ON_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB, LD_R_Pin|M3V3_REG_ON_Pin,GPIO_PIN_RESET)
    #endif
    /********************************/

    6 a' Q0 ?$ R0 J

    6 ^! k5 h0 b7 J( Y9 t
    通过宏,我们定义了一个简单的三元运算,通过STA来判断LED灯的开启状态,当STA为true时,开启LED灯。否则关闭LED灯。

    : I- V, r% v' ~. V0 s+ }) I- f/ t8 ~
    3 j- _4 N1 `& n. n* V# U
    然后通过编辑器找到并打开Application/User中的main.c,编写逻辑代码。找到main函数,我们可以看到生成代码时,已经通过HAL_Init(); SystemClock_Config(); MX_GPIO_Init();三个方法,帮我们初始化好了开发板。我们只需要在后面来编写自己的逻辑代码即可。

    - E1 I9 q6 `) C; q6 ?
    /********************************/
    - O7 U4 |* }. E2 ^* {
    uint8_t sta = ON;
    uint16_t delay = 5000;
    while (1)
      {
                    LED(sta); // 设置LED状态
                    sta =!sta;
                    HAL_Delay(delay); // 等待delay秒
    }
    /********************************/
    5 b" a; I$ p; A& |
    如上代码所示,我们每隔5秒钟修改一次LED的状态。而主程序在无限循环。因此,LED灯会每个5秒点亮一次,并持续5秒后关闭。
    , s8 ~0 v7 V0 F7 E$ D* Q: B
  • 编译并上传到开发板
    程序编写完成后,按下F7进行编译。确认没有编译错误后,点击Load图标,并按下Ctrl+F5将编译后的代码上传到开发板。
    6 b! c1 T& k) M4 Q
    [BGLNQW2~`Y(_Y~4CJ56ZMJ.png
  • 运行
    按下Ctrl+F5后,界面进入Debug模式,此时只需在工具栏点击Run。代码即可在开发板中运行。你会发现红色的LED灯会定期进行闪灭。大功告成。
    ' Z0 I6 j& u  J9 e) q$ a1 J# j7 _9 d3 N
    348L`PG~_5@6GPVU1ES4BU3.png
      S3 j  A  |' b! p7 o
: D  z3 |7 U" m
收藏 评论0 发布时间:2022-5-27 20:12

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版