当前位置: 首页 > news >正文

2-2 点灯例程(寄存器开发) - LI,Yi

视频选集(3/50)[2-2] 新建工程

注.当未烧录任何程序的前提下,STM32最小系统板上电后,出现现象:电源指示灯长亮,IO口测试灯不断闪烁。这是芯片里的一个测试程序

1. 器件

  • STM32最小系统板
  • 杜邦线(母对母)*4
  • ST-LINK V2下载器

2. 实现目标

点亮开发板上的IO口测试灯

2. 创建工程文件

  1. 复制工程建立 - LI,Yi-han - 博客园一篇中创建的2-1 STM32工程模板(寄存器开发)文件,粘贴副本,重命名为2-2 点灯例程(寄存器开发)文件

  2. 打开工程文件

  3. 最小系统板接上下载器,下载器通过USB口与PC主机连接

    image-20250728202826702

  4. 编译工程文件,点击下载

    image-20250728203100640

    image-20250728203011809

  5. 可见开发板上现象:电源灯依旧长亮,IO口测试灯熄灭、不再闪烁。这是由于该工程的主函数内只有一个空的死循环

3. 配置寄存器

  • IO口测试灯的对应引脚为PC13

  • 由图可见该LED为低电平点亮

    image-20250728203858647

  • PC13是GPIOC端口的IO口

  • GPIOC挂载在APB2下

  • 使用任何外设前,都要先使能时钟

3.1 APB2外设时钟使能寄存器RCC_APB2ENR

image-20250728205424159

image-20250728205447406

RCC->APB2ENR = 0x1<<4; // 将该寄存器的位4置1【开启GPIOC的时钟】

3.2 GPIOC端口配置高寄存器GPIOC_CRH

image-20250728210315238

image-20250728210700645

GPIOC->CRH = 0x3<<20; // 将该寄存器的位20、21置1【配置IO口-PC13:通用推挽输出模式,最大速度为50MHz】

3.3 GPIOC端口输出数据寄存器GPIOC_ODR

image-20250728211940837

  • 位13置1,则PC13引脚输出高电平
  • 位13置0,则PC13引脚输出低电平
GPIOC->ODR = 0x0; // 将该寄存器的位13置0【使PC13输出低电平,LED点亮】
GPIOC->ODR = 0x1<<13; // 将该寄存器的位13置1【使PC13输出高电平,LED熄灭】

4. 程序

#include "stm32f10x.h"                  // Device header/*------------------------------主函数------------------------------*/
int main(void)
{RCC->APB2ENR = 0x1<<4; // 将该寄存器的位4置1【开启GPIOC的时钟】GPIOC->CRH = 0x3<<20; // 将该寄存器的位20、21置1【配置IO口-PC13:通用推挽输出模式,最大速度为50MHz】GPIOC->ODR = 0x0; // 将该寄存器的位13置0【使PC13输出低电平,LED点亮】
}

编译,下载

开发板现象:IO口测试灯上电后长亮

image-20250728215252004

http://www.vanclimg.com/news/1137.html

相关文章:

  • 【Datawhale AI夏令营--task2】科大讯飞AI大赛(大模型技术)
  • 记录一次vue3+mqtt.js连接华为云mqtt的成功经历
  • 基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
  • 开发集合控件的拖拽流程优化——以TreeView为例
  • 第七天
  • 付老师名言
  • [羊城杯 2021]Baby_Forenisc-内存取证-Volatility 2工具下载使用- Volatility 2.6 的 Linux 免安装版(Standalone 版本)
  • 北大 2024 强基数学
  • 【ESP8266】Vscode + platformIo + Esp8266 新建工程 关键步骤
  • Revo Uninstaller Pro专业版领取:2025最佳Windows软件卸载工具
  • Datawhale AI夏令营 Dify入门 Task05 智能客服
  • PlantUML绘制时序图
  • helm环境快速部署实战
  • 用 Python 实现多干扰线图像验证码的识别系统
  • Python 实现多干扰线图像验证码识别
  • 学习链接
  • 03Gin中间件开发与鉴权实践
  • 入门
  • 浅析扫描线
  • CRUD
  • I2C
  • 小新Pad2022刷机记录
  • 最左前缀原则和覆盖索引相关问题
  • 【LeetCode 142】算法:环形链表 II
  • Gin框架介绍
  • 正则表达式中的元字符
  • sequence的启动
  • L. Dynamic Convex Hull 题解
  • 实时通信技术深度对比:WebSocket与SSE的最佳实践(1018)
  • 微服务架构的轻量级解决方案(6064)