01
前言
客户在使用 STM32H7 的时候,想要使用 DWT 计数来测量代码执行时间,评估执行效率。客户发现在重新上电或 reset 后,无法启用 DWT 进行计数。
02
调研
在 ARMv7-M 架构中有个 DEMCR 寄存器,这个寄存器可以控制 DWT 的使能。在power-on reset 后这个寄存器所有位的值都为 0。而当 bit[24]为 0 时,DWT 和 ITM 模块都是 disabled 的。所以为了启用 DWT 模块,必须将 DEMCR 的 bit[24]置为 1。如图 1 所示:
图1.DEMCR 寄存器
03
启用 DWT 进行计数
STM32H7 基于 Arm Cortex-M7 内核,而 Cortex-M7 是 ARMv7-M 架构,所以 H7 在配置 DWT 模块之前需要将 DEMCR 的 bit[24]置位。在基于 Cortex-M7 的芯片中,需要使用DWT-LAR 来解锁 DWT(其他核可能不需要,应具体分析),然后对 DWT_CTRL 进行相应使能即可。
在 CMSIS 文件中已经提供了相关寄存器的宏定义(例如在“core_cm7.h”文件中包提供了 DWT 和 DEMCR 的宏定义),我们可以使用这些宏定义方便的进行配置,如图 2所示:
图2.core_cm7.h 文件
示例(如下):使用 DWT 测量代码执行所用的时钟 cycle 数。
04
小结
在使用 ARMv7-M 架构的 STM32 时,对 DWT 配置之前应确保 DEMCR 中的 bit[24]已经被配置(使能 DWT),然后才能使用 DWT。
关键字:架构 STM32 DWT 计数
引用地址:
Arm®v7-M 架构的 STM32 如何启用 DWT进行计数
推荐阅读最新更新时间:2024-10-12 00:24
STM32 的位带操作
位操作就是可以单独的对一个比特位进行读和写,这个在51单片机中非常常见。51单片机中通过关键字sbit来实现位定义,STM32中则是通过访问位带别名区的地址来实现对某一位的操作。 例如51单片机中可以实现以下操作 #define LED_ON 0 sbit LED = P2^0; LED = LED_ON; 而现在STM32的位段、位带别名区就为了实现这样的功能。STM32针对SRM和外设区开辟了两个内存空间(位带区),分别是SRAM和外社区的最低1MB的空间。这两个1MB的内存空间除了可以像正常的 RAM 一样操作外,他们还有自己的位带别名区,位带别名区就是把1MB位带区的每一个位膨胀成一个32位的字,当通过访问位带
[单片机]
STM32(二)之GPIO操作(1)——之输入输出操作
GPIO是通用输入输出的简称,换句话说,其为MCU可控制的引脚,MCU通过GPIO引脚来与外部设备连接,从而实现与外部通讯、控制以及数据采集的功能。本文以STM32的GPIO为例子来介绍GPIO。 上图所示, 第一部分保护二极管及上下拉电阻 如图所示为保护二极管,用于防止引脚过高或过低的外部电压输入,当引脚的外部电压高于VDD时,上方的二极管导通,当引脚电压低于Vss时,下方的二极管导通,从而便可防止不正常的电压输入GPIO而烧毁内部芯片。但是STM32的引脚不应外接大功率的驱动器件。而第一部分和第七部分之间为上拉电阻和下拉电阻,用于GPIO设置时用于设置上下拉电阻。 第二部分:推挽输出和
[单片机]
取代x86、ARM 第三大CPU架构RISC-V还不够格:至少高性能上不会
目前主要的CPU指令系统中,x86在桌面及数据中心等领域占优,ARM则是移动芯片之王,开放开源的RISC-V发展迅猛,已经成为第三大CPU体系。 由于不受封锁限制,RISC-V这两年也深受中国厂商欢迎,国内的芯片公司也是RISC-V发展的推动力量之一。 本月初阿里平头哥发布全新RISC-V高能效处理器玄铁C908,官方表示,玄铁C908计算能效全球领先,较业界同性能处理器能效提升超20%,可用于智能交互、多媒体终端、AR/VR、无线通讯等领域。 尽管RISC-V受到了普遍欢迎,甚至主流意见也有认为它会取代x86、ARM架构成为主流,不过这个过程要很久,RISC-V的生态系统还要太多补课要完成。 就目前来看,RISC
[嵌入式]
64位MIPS架构为OCTEON III处理器提供低功耗、高吞吐量处理能力
新款SoC可将MIPS带到企业、数据中心与服务提供商基础架构的新型应用中 2015年6月19日 ─ Imagination Technologies 宣布,该公司的64位MIPS架构已获得面向下一代企业、数据中心与服务提供商基础架构等应用的Cavium新款低功耗OCTEON III SoC处理器的采用。 Cavium新推出的两款中级产品是其完备的64位MIPS OCTEON III多核处理器的新成员。此低功耗4至16核CN72XX和CN73XX SoC可提供高性能运算与封包性能,再加上强大的连网与虚拟化加速功能,能满足紧凑与强韧网络和安全设备、存储设备、无线基础架构、交换器以及集成路由器的严格功率需求。
[嵌入式]
MSP430在频率测量系统中的应用
1 概述 在通信系统中,频率测量具有重要地位。近几年来频率测量技术所覆盖的领域越来越广泛,测量精度越来越高,与不同学科的联系也越来越密切。与频率测量技术紧密相连的领域有通信、导航、空间科学、仪器仪表、材料科学、计量技术、电子技术、天文学、物理学和生物化学等。 频率测量一般都是由计数器和定时器完成,将两个定时/计数器一个设置为定时器,另一个设置为计数器,定时时间到后产生中断,在中断服务程序中处理结果,求出频率。这种方法虽然测量范围较宽,但由于存在软件延时,尽管在高频段能达到较高的精度,而低频段的测量精度较低。所以利用单片机测频时,如果选择不好的测量方法,可能会引起很大的误差。测量频率时如果不是真正依靠硬件控制计数或定时,而是
[测试测量]
苹果iPhone难以幸免,ARM架构也存在安全漏洞
Google安全团队Project Zero公布了多个高危 漏洞 ,称这些漏洞几乎影响到了市面上所有的微 处理器 ,AMD、ARM还是英特尔的处理器都难以幸免,围绕这些处理器打造的操作系统和硬件设备也会受到影响。 尽管最初认为 iPhone 可能不会受到英特尔、AMD和ARM芯片中发现的Meltdown的Spectre漏洞的影响,但事情也许并没有那么乐观,今天早些时候ARM公司发布的一份咨询报告指出,确实有部分Cortex-A处理器受到影响,而采用其技术的一些苹果A系列处理器就可能受到牵连。 基于ARM架构,iPhone,iPad,iPod Touch和Apple TV搭载的芯片也可能受到影响。外媒9to5mac指出,AR
[嵌入式]
STM32的USB中断说明
STM32的USB模块可以产生三种中断:USB唤醒中断、USB高优先级中断和USB低优先级中断,在STM32的参考手册中没有详细说明这三种中断对应哪些事件,现说明如下: 1)USB唤醒中断:在中断向量表中的位置是42。这个中断在USB设备从暂停模式唤醒时产生,唤醒事件由USB_ISTR寄存器的WKUP位标识。 2)USB高优先级中断:在中断向量表中的位置是19。这个中断仅由USB同步(Isochronous)模式传输或双缓冲块(Bulk)传输模式下的正确传输事件产生,正确传输事件由USB_ISTR寄存器的CTR位标识。 3)USB低优先级中断:在中断向量表中的位置是20。这个中断由所有其它的USB事件产生,例如正确传
[单片机]
STM32 UART串口驱动程序
示例1.通过UART1进行数据发送 UART 1 的初始化 /** * @brief UART1 Initialise. * @param None. * @retval None. */ void UART1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //UART1 选择对应UART的RCC时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP
[单片机]