【经验】雅特力AT32F4系列 MCU Cortex M4内核入门指南:位带操作、硬件浮点运算单元、滴答时钟中断功能
AT32F4系列MCU产品是基于Cortex™-M4F处理器架构,该处理器是一款低功耗处理器,具有低门数,低中断延迟和低成本调试的特点。支持包括DSP指令集与浮点运算功能,特别适合用于深度嵌入式应用程序需要快速中断响应功能。Cortex™-M4F处理器是基于ARMv7-M架构,既支持Thumb指令集也支持DSP指令集。下图为Cortex™-M4F处理器的内部框图,请参阅《ARM®Cortex-M4 技术参考手册》了解关于Cortex™-M4F更详尽信息。
图1. AT32 Cortex™-M4F内部框图
本文主要就M4内核自带的位带、硬件浮点运算单元和滴答时钟中断功能进行基础讲解。
案例位带操作
功能简介
利用位带操作,可以使用普通的加载/存储操作来对单一比特进行读写访问。在Cortex™-M4F中提供了两个位带区:SRAM最低1M字节空间和外设区间的最低1M字节空间。这两个区中的地址除了可以像普通存储器一样访问外,还可以通过它们各自的位带别名区来快捷访问这两个区中任意地址的任意比特位,位带别名区将位带区每个比特膨胀成一个32位的字。当你访问位带别名区的一个地址时,等同于直接访问位带区的一个比特位。
图2. 位带区与位带别名区的膨胀关系图A
图3. 位带区与位带别名区的膨胀关系图B
位带区:支持位带操作的地址区
位带别名区:对别名区地址的访问最终作用到位带区的访问上
在位带区中,每个比特都映射到别名地址区的一个字(这是只有LSB有效的字)。当一个位带别名区地址被访问时,会先把该地址变换成位带区地址。对于读操作,读取位带区地址中的一个字,再把需要的位右移到LSB,并把LSB返回。对于写操作,把需要写的位左移到对应的位序号处,然后执行一个比特级的“读-改-写”过程。
支持位带操作的两个内存区的地址范围为:
SRAM区中的最低1M字节:0x2000_0000~0x200F_FFFF
外设区间的最低1M字节:0x4000_0000~0x400F_FFFF
对于SRAM位带区的某个比特,如果所在字节地址为A,位序号为n(0<=n<=7),则该比特在别名区的地址为:AliasAddr=0x2200_0000+(A-0x2000_0000)*32+n*4对于外设区间位带区的某个比特,如果所在字节地址为A,位序号为n(0<=n<=7),则该比特在别名区的地址为:AliasAddr=0x4200_0000+(A-0x4000_0000)*32+n*4对于SRAM区中,位带区与位带别名区的映射如下表所示:
表1. SRAM区中的位带地址映射
对于外设区中,位带区与位带别名区的映射如下表所示:
表2. 外设区中的位带地址映射
位带操作的优越性最容易想到的是通过GPIO的管脚来单独控制每盏LED的点亮与熄灭。另一方面,也对操作串行接口提供很大的方便。总之,位带操作对于硬件I/O密集型的底层程序最有用处。位带操作还能简化跳转的判断。当跳转依据是某个位时,以前必须这样做:
读取整个寄存器
屏蔽不需要的位
比较并跳转现在只需要:
从位带别名区读取该位的状态
比较并跳转
使代码更简洁,这只是位带操作优越性的初步体现,位带操作还有一个重要的好处是在多任务以及多任务环境中,将以前的读-改-写需要的三条指令,做成了一个硬件级别支持的原子操作,消除了以前读-改-写可能被中断,导致出现紊乱的情况。
注意事项
1) 因各系列的外设IP地址排布的不同,AT32F421xx与AT32F425xx系列的GPIO外设基地址不在位带映射地址范围内。
资源准备
1) 硬件环境
对应产品型号的AT-START BOARD
2) 软件环境
project\at_start_f4xx\examples\cortex_m4\bit_band
软件设计
1) 配置流程
SRAM位带操作
定义全局变量variables=0xA5A5A5A5
对variables bit0的位带地址写0
检查variables是否修改为0xA5A5A5A4,如果是则表示操作成功
对variables bit0的位带地址写1
检查variables是否修改为0xA5A5A5A5,如果是则表示操作成功
对variables bit16的位带地址写0
检查variables是否修改为0xA5A4A5A5,如果是则表示操作成功
对variables bit16的位带地址写1
检查variables是否修改为0xA5A5A5A5,如果是则表示操作成功对
variables bit31的位带地址写0
检查variables是否修改为0x25A5A5A5,如果是则表示操作成功
对variables bit31的位带地址写1
检查variables是否修改为0xA5A5A5A5,如果是则表示操作成功
外设位带操作
对LED2对应GPIO ODT寄存器bit位的位带地址写0
对LED2对应GPIO ODT寄存器bit位的位带地址写1
循环执行上述操作,实现LED toggle功能
2) 代码介绍
main函数代码描述
宏定义内容描述
实验结果
SRAM位带操作:如果不满足预期,LED4翻转。
外设位带操作:如果满足预期,LED2翻转。
案例 硬件浮点运算单元
功能简介
FPU即浮点运算单元(Float Point Unit)。浮点运算,对于定点CPU(没有FPU的CPU)来说必须要按照IEEE-754标准的算法来完成运算,是相当耗费时间的。而对于有FPU的CPU来说,浮点运算则只是几条指令的事情,速度相当快。
AT32F4属于Cortex M4F架构,带有32位单精度硬件FPU,支持浮点指令集,相对于Cortex M0和Cortex M3等,高出数十倍甚至上百倍的运算性能。
注意事项
1) 由各系列应用方向及成本的综合考虑,AT32F415xx、AT32F421xx和AT32F425xx系列不支持硬件浮点运算单元。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD
2) 软件环境
project\at_start_f4xx\examples\cortex_m4\fpu
软件设计
1) 配置流程
FPU功能的开启必须要编译器和代码都开启才可以。若只开启编译器FPU,程序会进入hardfault;若只开启代码中FPU,编译器不会编译出FPU的代码指令。
编译器上开启FPU功能
IAR开启FPU方式如下图
图4. IAR开启FPU方式
MDK开启FPU方式如下图
图5. MDK开启FPU方式
代码中开启FPU功能
在system_at32f4xx.c文件中void SystemInit (void)函数确保有如下粗斜体代码
执行Julia算法函数
比较开启和不开启 FPU 功能的 Julia 运算速度。
2) 代码介绍main函数代码描述
实验结果
编译器上开启FPU功能,观察LED4翻转速度
编译器上关闭FPU功能,观察LED4翻转速度
对比以上两种情形LED4翻转速度区别
案例 系统滴答时钟中断
功能简介
系统嘀嗒定时器是一个24位递减计数器,递减至零可自动重载计数初值。可产生周期性异常,用作嵌入式操作系统的多任务调度计数器,或对于无嵌入式操作系统,可用于调用需周期性执行的任务。系统嘀嗒定时器校准值固定值9000,当系统嘀嗒时钟设定为9MHz,产生1ms时间基准。
资源准备
1) 硬件环境
对应产品型号的AT-START BOARD
2) 软件环境
project\at_start_f4xx\examples\cortex_m4\systick_interrupt
软件设计
1) 配置流程
配置systick时钟源
配置systick重载值并开启systick中断
在void SysTick_Handler(void)函数中添加应用代码
2) 代码介绍
main函数代码描述
实验结果
本应配置的是1 ms systick中断,每进200次systick中断LED2翻转一次,因此应该观察到的现象是LED2以200ms一次的频率进行翻转。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由ll转载自AT32 MCU 雅特力科技公众号,原文标题为:AT32讲堂034 | AT32 MCU Cortex M4内核入门指南,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
【经验】雅特力MCU产品JLink、JFlash操作指南
本文主要介绍雅特力MCU产品如何使用第三方Segger公司的JLlink软件包,使用JFlash操作MCU内部Flash,检查、读写flash内容,编程烧录。
【经验】雅特力AT32 MCU CAN入门指南
CAN是Controller Area Network的缩写(以下称为CAN),它的设计目标是以最小的CPU负荷来高效处理大量的报文。本文介绍雅特力AT32 MCU CAN入门指南
【经验】雅特力AT32 MCU如何使用OTA通过USART实现对固件的在线升级更新
雅特力AT32 MCU如何使用OTA通过USART对固体在线升级更新?OTA(空中下载技术)是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后便于通过预留的通信口,对产品中的固件程序进行更新升级。
雅特力32位MCU选型表
雅特力AT32 MCU的选型的相关技术参数如下,32位MCU,多种封装:TSSOP20,QFN28,QFN32,QFN48,LQFP48,LQFP64,LQFP100,LQFP144,稳定的工作温度:-40°C~85°C,-40°C~105°C,频率范围在96MHz~288MHz之间
产品型号
|
品类
|
Core
|
FPU
|
Speed(MHz)
|
Flash(KB)
|
SRAM(KB)
|
I/O
|
Advanced TM(16-bit)
|
GPTM(32-bit)
|
GPTM(16-bit)
|
Basic TM(16-bit)
|
Systick(24-bit)
|
WDT
|
WWDT
|
RTC
|
I2C
|
SPI
|
(F/H)I2S(1)(2)
|
USART/UART
|
SDIO
|
USB Device
|
CAN
|
ADC Engine
|
12-bit ADC ch
|
DAC Engine
|
12-bit DAC ch
|
PKG
|
Size(mm)
|
Temp(℃)
|
AT32F403ZCT6
|
32位MCU
|
M4
|
FPU
|
200MHz
|
256KB
|
96KB/224KB
|
112
|
3
|
2
|
8
|
2
|
1
|
1
|
1
|
1
|
3
|
4
|
0/4
|
3/2
|
2
|
1
|
1
|
3
|
21
|
2
|
2
|
LQFP144
|
20mmx20mm
|
-40℃~85°C
|
选型表 - 雅特力 立即选型
基于雅特力AT32 MCU的洗衣机电机控制驱动方案,解锁智能家居新体验
随着人工智能、物联网等技术的发展,传统家电逐渐向智能家电转型。洗衣机作为家庭生活中不可或缺的电器之一,其智能化升级对于提升生活品质具有重要意义。MCU作为电机控制系统的核心“大脑”,肩负着多样化的控制使命。雅特力AT32 MCU以其卓越的性能和完善的电机开发生态,为洗衣机、电动两轮车和电摩等电机应用产品提供高效电机控制驱动方案,并已实现规模量产。
AT32讲堂 | 解析雅特力AT32 MCU HICK时钟校准
AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟的精度达到±2.5%,可见精度会受到温度的影响。为了降低环境温度对精度造成的影响,用户可在运行时间隙调用校准程序来进行校准。
【经验】雅特力MCU AT32F403ARCT7串口实验出意外导致无法使用问题的分析
在使用雅特力AT32F403ARCT7 MCU做串口实验时出了点意外,串口一直无法使用。首先需要将AT32F403ARCT7 上的 PB6 重映射为USART1_TX。介绍了串口无法往外发送数据,定义和初始化修改步骤。
【经验】 雅特力AT32 MCU Printf的功能使用方法
内容概述本文档主要介绍雅特力AT32 MCU在Keil和IAR两种工程环境下的printf功能使用方法。其共包含6种方法,各方法的具体用法在具体内容中描述。
AT32讲堂 | 雅特力AT32 MCU的随机数生成
本章介绍了使用软件触发方式触发ADC,配置普通信道和DMA。本篇应用笔记适用于AT32各系列MCU,只要有ADC外设皆可适用。
【经验】雅特力MCU AT32F421的时钟配置教程
时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文就着重针对各系列的情况来详细介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。
【经验】解析雅特力AT32系列MCU RTC入门指南
RTC计数逻辑位于电池供电域,内部为一个32位递增计数器,只要电池供电域有电,RTC便会一直运行,不受系统复位以及VDD掉电影响。本文雅特力将为大家介绍AT32系列MCU的RTC入门指南。
如何在雅特力AT32 MCU上创建IAP应用程序
如何在雅特力AT32 MCU上创建IAP应用程序,文章概述了AT32 CAN IAP快速使用方法即使用CAN进行IAP升级,此示例使用PC上位软件(IAP_Programmer.exe)通过一个USB转CAN的桥接设备和目标板进行通信,IAP Demo和桥接设备默认CAN波特率使用500K。
【经验】如何使用雅特力MCU AT32F407的以太网通信接口实现在应用中编程?
在应用中编程(IAP)是一种在现场通过MCU通信接口(例如USART、USB、CAN和以太网)进行固件升级的方式。本文将介绍两种使用以太网通信外设在雅特力MCU AT32F407上实现IAP的解决方案。
【经验】雅特力AT32 MCU USB设备库的架构和使用方法
本文主要介绍雅特力MCU AT32 USB设备库的结构和库的使用方法,AT32 USB是基于USB2.0全速设备,不支持USB2.0高速设备。这里库的作用是用来管理USB外设和实现USB的基本协议,使开发者能够更快的上手开发。
【IC】雅特力AT32系列MCU通过IEC 60730功能安全认证,为家电产品提供安全保障
近日,雅特力AT32 MCU安全库顺利通过IEC 60730功能安全认证,为家电产品提供安全质量保证。国际公认的测试、检验和认证机构SGS为雅特力科技颁发了IEC 60730认证证书,彰显了雅特力科技在家电控制领域的卓越品质和技术实力,也为其在全球范围内的广泛应用奠定了坚实基础。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论