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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1215754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

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

MCP与A2A深度解析:AI系统集成与智能体协作的未来之路

MCP与A2A是AI系统集成的两大关键协议。MCP解决AI安全调用工具与数据的问题,提供资源、工具和提示模板三大能力;A2A则规范智能体间的协作,通过任务、消息和产物等组件实现高效接力。它们共同构成AI系统的分层规范,将开发范式从&quo…

【升级版本】基于多目标粒子群算法的微电网优化调度【风光、储能、柴油、燃气、电网交互】附Matlab代码

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

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

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

【2026最新】大模型面试全攻略:23家科技公司面试经验+高频考点总结,助你轻松上岸

本文详细记录了作者对23家大模型相关公司的面试经历,包括智元机器人、面壁科技、Minimax、阿里夸克、蚂蚁等公司的面试流程与结果。作者总结了大模型面试的高频考点,如多头注意力机制、框架并行方式、BERT/GPT模型细节、大模型训练技巧等,并分…

【使用Copulas对金融时间序列进行波动率估计与预测,涵盖GARCH、EWMA和EqWMA等模型】基于件风险价值(CVaR)、极值理论(EVT)、风险因子及蒙特卡洛模拟进行市场风险管理附Matlab

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

个人AI产业定义、产业架构与发展趋势白皮书|附60页PDF文件下载

本报告以用户为中心,立足于产业与生态,系统阐述个人AI时代来临的产业逻辑与必然趋势,厘清个人AI的基础架构与核心特征,剖析其对产业链、价值链及竞争格局带来的结构性变革。报告亦将对个人AI主导的未来生态进行前瞻展望&#xff0…

企业AI开发与技术实践白皮书2025|附36页PDF文件下载

白皮书探讨了在GenAI时代,企业如何利用大模型技术实现智能化转型。白皮书指出,大模型能力的不断提升为企业带来了无限想象力,但也面临着战略规划、数据治理、算力资源、场景适配等方面的挑战。企业需要构建覆盖顶层设计、技术选型、数据治理、…

【数据驱动】【航空航天结构的高效损伤检测技术】一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应附Matlab代码

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

【柔性作业车间调度问题FJSP】基于鹅优化算法(GOOSE Algorithm,GOOSE)求解柔性作业车间调度问题(FJSP)研究附Matlab代码

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

如何保证服务高可靠? - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P1462 通往奥格瑞玛的道路

点击查看代码 #include<bits/stdc++.h> using namespace std;typedef long long LL; typedef pair<LL,int> PII; const int N=1e4+10,M=1e5+10;int h[N],ne[M],idx,e[M],w[M]; int n,m; LL b; LL f[N]; LL…

Codeforces Round 1073 Div.1 写题记录(编号 2190)

A 显然有序 Bob 赢,那么无序的情况就是选出一个不升子序列变成不降子序列,考虑一定有这么一个分界点,是的前面全部取 \(1\),后面全部取 \(0\),看一下合不合法即可,当然有一种更简单的构造方式是排完序后比对哪些…

动态系统思维:告别僵化内耗的破局指南

职场中总有这样的困惑&#xff1a;公司制定了标准化流程&#xff0c;却越执行越低效&#xff1b;团队追求“绝对有序”&#xff0c;反而失去创新活力&#xff1b;个人埋头重复固有工作&#xff0c;却在变化中逐渐被淘汰。我们总以为“稳定有序”是生存之道&#xff0c;却忽略了…

Vue 1.26

一、指令补充 1.指令修饰符 &#xff08;1&#xff09;按键修饰符 keyup.enter → 键盘回车监听 <body><div id"app"><h3>keyup.enter > 监听键盘回车事件</h3><input keyup.enter"fn" v-model"username" type&…

一站式指南:Obsidian Typora 统一写作规范与存量内容迁移实战

一站式指南:Obsidian & Typora 统一写作规范与存量内容迁移实战 引言 在内容创作领域,选择合适的写作工具和遵循统一的规范是提升效率和保证质量的关键。然而,许多创作者在使用 Obsidian 和 Typora 进行 Markdo…

UnicodeDecodeError: ‘charmap‘ codec can‘t decode byte 0x81 in position 17: character maps to <undefi

目录 问题原因分析1. **编码不匹配**2. **常见场景** 解决方案**方案1&#xff1a;设置正确的字符集连接MySQL****方案2&#xff1a;Python脚本中的解决方案****方案3&#xff1a;检查并设置系统环境编码****方案4&#xff1a;MySQL服务器端配置检查****方案5&#xff1a;在代码…

golang中使用 sort.Interface 实现复杂多级排序

举两个例子&#xff0c;说明 sort.Interface实现多级排序。 例子 1 学生成绩排序&#xff08;先按成绩降序&#xff0c;成绩相同按姓名升序&#xff09;package mainimport ("fmt""sort")type Student struct {Name stringScore int}type ByScoreAndName …

MySQL 中的 utf8 vs utf8mb4 区别

目录核心区别详细对比1. **编码范围不同**2. **历史背景**3. **实际影响最明显的场景**4. **存储空间差异**5. **性能差异**关键限制**索引长度限制**实际使用建议1. **新项目一律使用utf8mb4**2. **现有系统迁移步骤**3. **连接配置**4. **排序规则选择**兼容性考虑**向下兼容…

指针,C语言的灵魂与噩梦:从入门到“放弃”的终极指南 [特殊字符]

深入理解指针&#xff0c;让你的C语言技能实现质的飞跃&#xff01; 一、指针是什么&#xff1f;为什么它如此重要&#xff1f; 指针——这两个字让无数C语言初学者又爱又恨。简单来说&#xff0c;指针就是存储内存地址的变量。但它远不止如此&#xff01; 指针的三大核心意义…