news 2026/5/30 12:51:20

STM32F0实战:基于HAL库开发【2.1】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32F0实战:基于HAL库开发【2.1】
7.4.2 从待机模式唤醒

待机模式允许达到能耗最低,它基于Cortex-M0深度睡眠模式,电压调节器禁用,1.8V域关闭,PLL、HIS和HSE振荡器也关闭,SRAM和寄存器内容丢失。只有RTC寄存器、RTC备份寄存器和备用电路保持工作。可以使用HAL库中的HAL_PWR_EnterSTANDBYMode()函数进入待机模式,由于待机模式下电压调节器和时钟均关闭,因此只有WKUP引脚的上升沿、RTC闹钟(Alarm A)、RTC唤醒、篡改事件、时间戳事件、NRST外部重置事件或IWDG复位才能将微控制器唤醒。

本例中待机模式下的唤醒是通过WKUP1(PA0)引脚来实现的,当微控制器复位后,同样是执行一个数字由“200”开始的递减,当数值递减至“0”时,执行WFI指令将微控制器置于待机模式,之后WKUP1(PA0)引脚的上升沿会将微控制器唤醒,并再次进行数字的递减过程。使用STM32CubeMX软件建立项目时,在“Pinout”和“Clock Configuration”视图中对引脚和时钟的配置方法如图7-8和图7-9所示。

待机模式下的唤醒程序详见代码清单7-2。

代码清单7-2 待机模式下的唤醒程序(main.c)(在附录J中指定的网站链接下载源代码)

第8章 DMA控制器

DMA(Direct Memory Access)即直接存储器访问,是一种不经过CPU而直接从存储器存取数据的数据交换模式。在DMA模式下,CPU只需要向DMA控制器下达指令,数据传输由DMA自动完成,这样能够减少CPU的资源占用。DMA是现代高性能微控制器的标准配置,本章将重点介绍STM32F0系列微控制器片内的DMA控制器。

8.1 DMA概述

DMA控制器用于提供外设和存储器之间、存储器和存储器之间的高速数据传输,数据可以通过DMA控制器进行快速传输而无须CPU干预,这就为其他操作保留了CPU的资源。DMA非常适用于快速设备与存储器批量交换数据的场合,使用DMA既能够保证数据传输的准确性,又可以大幅度减少快速设备的读写操作对CPU的干扰。

8.1.1 DMA控制器内部结构

STM32F072VBT6微控制器片内的DMA控制器共有7个通道,每个通道都相应地管理一个或多个外设对存储器的访问请求,DMA控制器和Cortex-M0内核共享系统数据总线,用于执行直接存储器数据传输,控制器内部的仲裁器用于协调不同DMA请求的优先权,其内部结构如图8-1所示。

当CPU和DMA同时访问相同的目标(RAM或外设)时,DMA请求会暂停CPU访问系统总线若干个周期,总线仲裁器执行循环调度,以确保CPU至少可以得到一半的系统总线带宽。每个通道都与专用的硬件DMA请求相连接,并且每个通道都支持软件触发。当有多个DMA请求发生时,其优先权可以通过软件编程来设置。数据源和目标数据区的传输宽度可以按需设置,数据可以以字节、半字或字的长度进行传输,但源和目标地址的数据长度必须一致。DMA传输的最大数量为65536,并且支持无限循环操作。每个DMA通道都有DMA传输中、DMA传输完成和DMA传输错误三个事件标志。这三个事件标志的逻辑或作为一个单独的中断请求,向CPU申请中断。

8.1.2 DMA的处理过程

在发生一个事件后,外设向DMA控制器发送一个D

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 4:32:51

大语言模型训练原理解析:ChatGPT背后的技术原理与应用价值

大语言模型训练分为三步:预训练阶段通过互联网数据训练基础预测模型;监督微调阶段通过问答数据让模型学会回答问题;强化学习阶段让模型自行探索最佳解法,产生思维链。大模型本质是统计学预测器,通过预测下一个token生成…

作者头像 李华
网站建设 2026/5/29 23:12:43

【实时无功-有功控制器的动态性能】【带有电流控制的两级电压源变流器(VSC)】采用αβ阿尔法-贝塔转换进行电流反馈的实时无功功率控制器附Simulink仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码及仿真…

作者头像 李华
网站建设 2026/5/22 14:49:28

Flutter for OpenHarmony:用 StatefulWidget 实现基础用户交互

Flutter for OpenHarmony:用 StatefulWidget 实现基础用户交互 作者:灰灰勇闯IT 时间:2026年1月 适用环境:OpenHarmony 4.0 Flutter for OpenHarmony SDK 本文目标:掌握 StatefulWidget、setState()、按钮点击、文本输…

作者头像 李华
网站建设 2026/5/22 17:05:49

C++实现ATM状态机

C实现ATM状态机 以下是一个使用 C 实现的 ATM 状态机示例程序&#xff0c;采用面向对象的方式实现。程序模拟了一个简单的 ATM 系统&#xff0c;包含以下功能&#xff1a; 用户登录查询余额存款取款退出完整代码 #include <iostream> #include <string> #include &…

作者头像 李华
网站建设 2026/5/22 16:38:58

【计算机毕业设计案例】基于springboot的居民志愿服务智慧系统社区志愿者服务系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华