问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

从零开始的STM32 LED教程(小白向)

创作时间:
作者:
@小白创作中心

从零开始的STM32 LED教程(小白向)

引用
CSDN
1.
https://blog.csdn.net/c858845275/article/details/141849147

本文是一篇面向STM32初学者的LED点亮教程,详细介绍了如何通过寄存器操作和标准库函数两种方式控制LED,并提供了ST-Link和串口两种程序下载方法。

一、为什么LED会作为第一个例程

在STM32教程中,LED实验通常作为第一个例程,原因在于:

  1. 实验现象直观,便于观察
  2. 有助于理解GPIO操作
  3. 为后续学习打下基础

二、需要准备什么?

硬件准备

  • STM32最小开发板(推荐STM32F103C8T6或STM32F103C6T6)

软件准备

  • 已搭建好的STM32F1标准库开发环境
  • 下载实验所需资料包:LED教程资料(提取码:clxm)

三、编写一个点亮LED的程序

1. 操作寄存器点亮一个LED

步骤:

  1. 打开STM32标准库工程
  2. 配置GPIOC时钟
    RCC->APB2ENR=0x00000010;
    
  3. 配置GPIOC模式寄存器
    GPIOC->CRH=0x00300000;
    
  4. 控制GPIO输出
    GPIOC->ODR=0x00000000;
    

完整代码如下:

#include "stm32f10x.h"
int main(void)
{
    RCC->APB2ENR=0x00000010;
    GPIOC->CRH=0x00300000;
    GPIOC->ODR=0x00000000;
    while(1)
    {
    }
}

2. 使用标准库点亮一个LED

步骤:

  1. 使能GPIOC时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    
  2. 配置GPIO模式和速度
    GPIO_InitStructTypeDef.GPIO_Mode =GPIO_Mode_Out_PP;
    GPIO_InitStructTypeDef.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructTypeDef.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC,&GPIO_InitStructTypeDef);
    
  3. 控制GPIO电平
    GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);
    

完整代码如下:

#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructTypeDef;
int main(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    GPIO_InitStructTypeDef.GPIO_Mode =GPIO_Mode_Out_PP;
    GPIO_InitStructTypeDef.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructTypeDef.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC,&GPIO_InitStructTypeDef);
    GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);
    while(1)
    {
    }
}

四、程序下载与工程测试

1. 使用ST-Link下载程序

步骤:

  1. 连接ST-Link
  2. 配置Keil
  3. 烧录程序

2. 使用串口下载程序

步骤:

  1. 连接CH340串口模块
  2. 进入系统存储器模式
  3. 使用FlyMcu软件下载程序

五、结语

点亮LED是STM32开发的第一个重要实验,虽然内容较多,但对初学者来说非常关键。希望本文能帮助大家顺利入门STM32开发。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号