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

蓝桥杯电子赛----嵌入式赛道备赛LED

部分内容来源于以下文章:【STM32】STM32系统时钟RCC_stm32中的rcc-CSDN博客

【HAL库与CubeMX】CubeMX中的SYS配置选项

一、stm32开发方式

1、基本库开发

2、HAL库开发(利用STM32CubeMX,通过可视化编程操作,自动生成代码)

3、LL库开发

4、寄存器开发

二、使用stm32CubeMX和keil5新建工程

在一般工程中,通用的配置是开启时钟(RCC配置)、以及HAL初始化配置(SYS配置)

1、先选择芯片stm32G431RB(查看CT117E-M4产品手册)

2、创建项目

3、RCC复位和时钟控制(Reset and Clock Control)

Disable:禁用外部时钟
BYPASS Clock Resource:外部有源晶振(旁路时钟源)
Crystal/Ceramic Resonator:外部无源晶振(陶瓷晶振)

RCC的概念
在STM32中,RCC(Reset and Clock Control)是时钟和复位控制模块

它负责管理系统时钟的生成和分配,以及控制外设的复位和时钟开启/关闭

RCC的主要功能包括:

a. 时钟源选择:RCC可以选择不同的时钟源,比如内部振荡器、外部晶振等。
b. 时钟配置:可以配置主时钟、外设时钟等,以满足不同外设的工作频率需求。
c. 复位控制:RCC可以对各个外设进行复位,确保在系统初始化时外设处于已知状态。
d. 时钟使能/禁用:动态地开启或关闭外设的时钟,以节省功耗,通过RCC配置开发者可以优化STM32的性能和功耗,确保系统在不同工作条件下稳定运行。

4、SYS配置

1. 在STM32CubeMX的SYS选项栏中有SW和JTAG协议选项,用户可以根据需要选择相应的协议。

1)JTAG调试接口(JTAG-DP)需要5个引脚;CubeMX中可选择5pin或4pin的JTAG,5pin比4pin多了一个复位引脚。
2)SW调试接口(SW-DP)需要2个引脚。二者之间有复用引脚。SW调试端口采用同步串行协议:SWCLK引脚为从主机到从机的时钟信号;SWDIO为双向数据信号。

3)什么情况用什么接口

a. ST-Link采用的是SW调试接口,选择Serial Wire
b. J-Link采用的是JTAG调试接口,根据实际要求选择 JTAG(4pin) 或者 JTAG(5pin) ;
c. 如果使用J-Link 但是采用SWD协议,也可以选择Trace Asynchronous Sw
Trace Asynchronous Sw 模式有时候也可以解决使用ST-Link 烧录之后无法烧录和调试的情况。

4)为了避免一次烧录之后无法下一次烧录或者调试的情况, 推荐选择Serial Wire。

如果在STM32CubeMX中选择SW协议,MDK 也必须 选择SW协议。JTAG协议配置也同理。否则会造成下载和调试失败。在实际项目中SW协议使用的比较多,速度更快,占用的引脚更少,推荐配置成SW协议,即Serial Wire模式。

如果选择的是SW协议,在MDK中要按下图操作。

2. System Wake-Up :
设置低功耗模式下的自动唤醒功能,通过引脚PA0。

3. Timebase Source :
一般指HAL的时基,即HAL库中的uwTick,用于实现HAL_Delay()以及作为各种timeout时钟的基准。一般情况下直接选择默认的Sys Tick(嘀嗒定时器)来维护SYS Timebase Source即可,即直接放在SysTick_Handler()中断服务函数中,也就是下面的HAL_IncTick()函数。

5、配置时钟 

输入时钟频率(Input frequency)配置为24MHz外部高速频率(通过查看CT117E-M4产品手册中的电路原理图得出)

6、配置Project Manager

 

7、生成代码

 8、配置keil5

a、安装芯片包(第一次打开keil5需要做此步骤)

b、调试器

 三、点亮LED

PD2为高电平时,锁存器使能,数据从右端(1D~8D)传到左端(1Q~8Q);数据传输完后,就将PD2置0,数据不再传输过来,避免LCD对LED产生影响(LCD与LED有共用引脚) 。

因为LED左侧接VDD(高电平),所以右侧传过来低电平,形成电势差,LED就会点亮。此处设置PC8~PC15为输出高电平,让LED保持默认熄灭状态 。

 在keil 5中的操作和上面一样

代码部分

所有代码必须写在BEGIN和END之间,比如说 

如果重新用Cube MX生成代码,在BEGIN和END之外写的代码会全部消失。

下面代码的功能:第led个灯是mode状态(根据判断语句,mode为1是亮,mode为0是灭)

GPIO_PIN_8为0x0100,  即0000 0001 0000 0000

GPIO_PIN_9为0x0200,  即0000 0010 0000 0000

GPIO_PIN_10为0x0400,即0000 0100 0000 0000

由此可知,GPIO_PIN_8左移一位就是GPIO_PIN_9

<< 是左移运算符

0100 << 1  =  1000

0x0100 << 1  =  0x0200

led_show(1,1);  //是将led1点亮,即将PC8清零

PC8就是LED1,0x0100 << (1-1),就是0x0100

http://www.xdnf.cn/news/1287703.html

相关文章:

  • lesson36:MySQL从入门到精通:全面掌握数据库操作与核心原理
  • Python初学者笔记第二十四期 -- (面向对象编程)
  • 计算机网络1-7:第一章 概述 章节小结
  • 用 Apache Iceberg 与 Apache Spark 在 Google Cloud 打造高性能、可扩展的数据湖仓
  • 【Java Web 快速入门】九、事务管理
  • 【论文阅读】RestorerID: Towards Tuning-Free Face Restoration with ID Preservation
  • 【游戏优化笔记】开发中如何减少建筑和树木等环境元素的资源消耗?
  • 【跨服务器的数据自动化下载--安装公钥,免密下载】
  • 【CSS3】录音中。。。
  • 【oracle闪回查询】记录字段短时间被修改的记录
  • 【AI绘画】Stable Diffusion webUI 常用功能使用技巧
  • css之再谈浮动定位float(深入理解篇)
  • react+vite来优化下每次使用hook函数都要引入的情况
  • React (react-amap)高德地图使用(加标记、缩放、缩略图)
  • 荣耀手机无法连接win11电脑,错误消息:“无法在此设备上加载驱动程序 (hn_usbccgpfilter.sys)。”解决方案
  • OBOO鸥柏丨智能会议平板教学查询一体机交互式触摸终端招标投标核心标底参数要求
  • SQL Server增加对UTF-8的支持
  • Baumer高防护相机如何通过YoloV8深度学习模型实现纸箱的实时检测计数(C#代码UI界面版)
  • 谷歌ADK接入文件操作MCP
  • 力扣47:全排列Ⅱ
  • 基于Python的《红楼梦》文本分析与机器学习应用
  • 力扣 hot100 Day71
  • vivo Pulsar 万亿级消息处理实践(2)-从0到1建设 Pulsar 指标监控链路
  • [激光原理与应用-254]:理论 - 几何光学 - 自动对焦的原理
  • 数据结构:中缀到后缀的转换(Infix to Postfix Conversion)
  • Flutter GridView的基本使用
  • Java 工厂方法模式
  • 【项目设计】高并发内存池
  • 北京-4年功能测试2年空窗-报培训班学测开-第七十四天-线下面试-聊的很满意但可能有风险-等信吧
  • cuda排序算法--双调排序(Bitonic_Sort)