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

蓝桥杯嵌入式赛道复习笔记1(led点亮)

前言

基础的文件创建,参赛资源代码的导入,我就不说了,直接说CubeMX的配置以及代码逻辑思路的书写,在此我也预祝大家人人拿国奖

理论讲解

原理图简介

 1.由于存在PC8引脚到PC15引脚存在冲突,那么官方硬件给的解决方案是加入了一个PD2锁存器,但是有这个是远远不够的,如果想要解决,可以在LED笔记那里观看解决

2.LED只有设置为低电压时才可以让我们的灯泡亮

手册讲解

在你学习的时候可能出现以下情况

HAL_GPIO_WritePin(GPIOC,0xFF00, GPIO_PIN_RESET);

这个就要追溯到我们的底层代码去了解一下HAL_GPIO_WritePin

当设置为SET时

 

当设置为RESET时

现在我可以给你个式例 

#include  "led_test.h"
//uwTick
uint32_t count;
uint32_t PIN=0xFF00;

void led_start(){
	    count=uwTick;
	    while(uwTick<count+1000){}
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
			count=uwTick;
		  while(uwTick<count+1000){}
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
}

实战代码

CubeMX的配置

第1步

第2步

Debug配置成Serial Wire(SWD)的原因主要有以下几点:

  1. 引脚数量少:SWD是一种双线协议,只需要使用两个引脚(SWDIO和SWCLK),相比JTAG等其他调试接口,占用的引脚数量更少,适合引脚资源有限的场景。

  2. 可靠性高:在高速模式下,SWD比JTAG更加可靠。在大数据量的情况下,JTAG下载程序可能会失败,而SWD发生的几率会小很多。

  3. 下载速度快:SWD的下载速度可以达到10M/s,且在实际使用中表现稳定。

  4. 调试效率高:SWD模式下,调试器可以直接访问芯片的寄存器,进行读写操作,便于对系统进行调试。

  5. 避免用户程序干扰:在调试过程中,如果用户程序存在逻辑错误,可能会影响JTAG下载程序的执行。而SWD模式下,即使用户程序有错误,也可以通过持续复位的方式避免用户程序的干扰,从而正常下载程序。

  6. 开发工具支持:许多现代的开发工具和调试器都支持SWD模式,比如STM32CubeMX等,在这些工具中配置SWD可以确保调试和下载的顺利进行。

因此,将Debug配置成Serial Wire模式,可以提高调试的效率和可靠性,减少引脚占用,避免用户程序的干扰,并且得到开发工具的良好支持。

第3步

led代码

#include  "led_test.h"
//uwTick
uint32_t count;
uint32_t PIN=0xFF00;

void led_start(){
	    count=uwTick;
	    while(uwTick<count+1000){}
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
			count=uwTick;
		  while(uwTick<count+1000){}
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
}

相关文章:

  • Python实现限流算法
  • 使用-v选项查看编译器详细搜索路径(g++示例)g++ -v -c main.cpp 发现自定义路径没有被包含怎么办
  • 如何用Deepseek制作流程图?
  • 数据结构---堆栈和列
  • 77.HarmonyOS NEXT ImageViewerView 组件深度剖析: Swiper容器与懒加载深度解析
  • 智慧加油站小程序数据库设计文档
  • Redis 的应用场景
  • 提升HDFS存储和读取效率
  • Json实现深拷贝的缺点
  • 2.5 python接口编程
  • Java File 类详解
  • Wireshark 抓包全解析:从数据捕获到报文分析
  • 2024年12月CCF-GESP编程能力等级认证C++编程二级真题解析
  • 深入探索人工智能(AI):分类、应用与案例分析
  • 基于模态特定因子的高效低秩多模态融合方法解析
  • 基于Python的天气预报数据可视化分析系统-Flask+html
  • python从邮件中提取链接中的符号为什么会变成amp; 解决办法
  • 华为手机助手输入连接码时光标乱跳
  • 本地部署Spark集群
  • Markdig:强大的 .NET Markdown 解析器详解
  • 国家统计局:要持续加大好房子建设供应力度,积极推动城市更新行动和保障房建设
  • 宫崎骏的折返点
  • 第十届青春文学奖揭晓,梁晓声获特别奖
  • 专利申请全球领先!去年我国卫星导航与位置服务产值超5700亿
  • 刘国中将出席第78届世界卫生大会并顺访瑞士、访问白俄罗斯
  • 赡养纠纷个案推动类案监督,检察机关保障特殊群体胜诉权