stm32之内部功能

一、位带操作

在学习51单片机的时候就使用过位操作,通过关键字sbit对单片机IO口进行位定义。但是stm32没有这样的关键字,而是通过访问位带别名区来实现,即将每个比特位膨胀成一个32位字,通过位带别名区指针指向位带区内容。

支持位带操作的两个内存区的范围是:

MSP430单片机之RTC-实时时钟

RTC-Real Time Clock是430单片机的实时时钟模块,可以配置成实时时钟模式(万年历)或者一般目的的32位计数器模式,其中实时时钟模式提供了年月日、时分秒,可以选择BCD码或者二进制格式,并且具有可编程的闹钟。RTC模块支持中断。相关寄存器请参阅430系列单片机user's guide(我用的是5438A)。

ARM汇编指令(6)——批量数据加载/存储指令

ARM微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据,批量加载指令 用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作。

常用的加载存储指令如下:LDM(或STM)指令

LDM(或STM)指令的格式为:

LDM(或STM){条件}{类型} 基址寄存器{!},寄存器列表{∧}

LDM(或STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为 以下几种情况:

IA 每次传送后地址加1;
IB 每次传送前地址加1;
DA 每次传送后地址减1;
DB 每次传送前地址减1;
FD 满递减堆栈;
ED 空递减堆栈;
FA 满递增堆栈;
EA 空递增堆栈;

{!}为可选后缀,若选用该后缀,则当数据 传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。

基址寄存器不允许为R15,寄存器列表可以为R0~R15的任意组合。

【视频】SuperFlash®闪存擦除介绍

我们都使用NOR闪存来加载简单的引导代码,但NOR闪存有一个大问题,就是它的擦除时间。如果您在现场重新刷新系统或者在系统上运行一些系统测试,则擦除整个NOR闪存芯片可能需要几分钟,甚至擦除几个扇区都需要几十秒的时间。这就是为什么推出SuperFlash®闪存的原因。SuperFlash®闪存可以代替其他NOR闪存芯片。

MM32 定时器捕获比较器输出

MM32L0系列MCU内嵌两个通用比较器 COMP1 和 COMP2,为通用的可编程电压比较器,可独立使用(适用所有终端上的 I/O 口),也可与定时器结合使用, 支持两个独立的比较器。它们可用于多种功能,包括:由模拟信号触发低功耗模式唤醒事件调节模拟信号与 DAC 和定时器输出的 PWM 相结合,组成逐周期的电流控制回路。

MRAM进驻MCU,28nm下将无闪存?

目前在微控制器(MCU)上采用MRAM等新兴内存并不普及,主要是因为这些新技术的成本比起NOR闪存或SRAM更高。不过,随着制程微缩超过14nm,预计情况将会发生变化…

随着越来越多具成本效益的应用选择磁阻随机存取内存(MRAM),不仅为其带来了成长动能,业界生态系统也开始支持这一新兴内存选择。

UART, SPI, IIC对比和总结

UART、SPI、IIC是经常用到的几个数据传输标准,下面就分别总结一下:

UART(Universal Asynchronous Receive Transmitter):也就是我们经常所说的串口,基本都用于调试。

AVR开发 Arduino方法(二) 中断子系统

在了解中断子系统之前,首先要了解中断的概念。你正在看书,这时电话响了,你会怎么做呢?相信大多数人会这样:先标记看到的位置,接完电话回来后继续阅读。这就是一个现实生活中中断的例子,我们把“电话响了”成为中断源。Arduino UNO R3的主处理器ATMega328P拥有26个中断源,如下表所示:

向量号

程序地址

中断源

【下载】dsPIC33EP128GS808c用户指南

dsPIC33EP128GS808开发板(简称开发板)旨在帮助评估和开发dsPIC33EP“GS”系列数字信号控制器(Digital Signal Controller,DSC)的固件。

本文档介绍了如何使用dsPIC33EP128GS808开发板作为开发工具在目标板上仿真,以及如何调试固件。

单片机mcu内存分配详解

谈到内存,我们都会想到PC,对于单片机或者arm来说也是存在内存的,简单的理解是:内存嘛……就是存放东西的地方,只不过这个东西是数据而已,好了,还是把重点放在mcu上面,对于一款mcu来说,在性能描述的时候都会告诉sram,flash的容量大小,对于初学者来说,也不会去考虑和理会这些东西,拿到东西就只用。其实不然,这些量都是十分重要的,仔细想想,代码为什么可以运行,代码量是多少,定义的int、short等等类型的变量究竟是怎么分配和存储的,这些问题都和内寸有关系。

首先单片机的内存可以大小分为ram和rom,这里就不再解释ram和rom的区别了,我们可以将其等效为flash和sram,其中根据flash和sram的定义可得,flash里面的数据掉电可保存,sram中的并不可以,但是sram的执行速度要快于flash,可以将单片机的程序分为code(代码存储区)、RO-data(只读数据存储区)、RW-data(读写数据存储区)和ZI-data(零初始化数据区)。在MDK编译器下可以观察到在代码中这4个量的值,如下图所示: