BOOT0和BOOT1
STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
1)用户闪存 = 芯片内置的 Flash。
2)SRAM = 芯片内置的 RAM区,就是内存啦。
3)系统存储器= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段 Bootloader,就是通常说的 ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个 ROM区。
在每个 STM32的芯片上都有两个管脚 BOOT0和 BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:
本文档介绍了如何使用dsPIC33EP128GS808开发板作为开发工具在目标板上仿真,以及如何调试固件。
dsPIC33EP128GS808开发板(简称开发板)旨在帮助评估和开发dsPIC33EP“GS”系列数字信号控制器(Digital Signal Controller,DSC)的固件。
<strong>一、位带操作</strong>
在学习51单片机的时候就使用过位操作,通过关键字sbit对单片机IO口进行位定义。但是stm32没有这样的关键字,而是通过访问位带别名区来实现,即将每个比特位膨胀成一个32位字,通过位带别名区指针指向位带区内容。
支持位带操作的两个内存区的范围是:
0x2000_0000‐0x200F_FFFF(SRAM 区中的最低 1MB)
0x4000_0000‐0x400F_FFFF(片上外设区中的最低 1MB)
位带别名区地址=(A&0xF0000000)+0x2000000+(A&0xFFFFF)<<5+(n≤2)
其中A为位带区地址,n为该字节的第几位。
这里再不嫌啰嗦地举一个例子:
RTC-Real Time Clock是430单片机的实时时钟模块,可以配置成实时时钟模式(万年历)或者一般目的的32位计数器模式,其中实时时钟模式提供了年月日、时分秒,可以选择BCD码或者二进制格式,并且具有可编程的闹钟。RTC模块支持中断。相关寄存器请参阅430系列单片机user's guide(我用的是5438A)。
<strong>1.计数器模式</strong>
实时时钟控制器寄存器1 RTCMODE位被重置时,计数器模式被选择,通过软件设置可以得到一个32位的计数器。从时钟模式切换到计数器模式是通过重置计数值:RTCNT1、RTCNT2、RTCNT3、RTCNT4 和 预换算计数器:RT0PS、RT1PS。
我们都使用NOR闪存来加载简单的引导代码,但NOR闪存有一个大问题,就是它的擦除时间。如果您在现场重新刷新系统或者在系统上运行一些系统测试,则擦除整个NOR闪存芯片可能需要几分钟,甚至擦除几个扇区都需要几十秒的时间。这就是为什么推出SuperFlash®闪存的原因。SuperFlash®闪存可以代替其他NOR闪存芯片。
ARM微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据,批量加载指令 用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作。
常用的加载存储指令如下:LDM(或STM)指令
LDM(或STM)指令的格式为:
LDM(或STM){条件}{类型} 基址寄存器{!},寄存器列表{∧}
LDM(或STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为 以下几种情况:
MM32L0系列MCU内嵌两个通用比较器 COMP1 和 COMP2,为通用的可编程电压比较器,可独立使用(适用所有终端上的 I/O 口),也可与定时器结合使用, 支持两个独立的比较器。它们可用于多种功能,包括:由模拟信号触发低功耗模式唤醒事件调节模拟信号与 DAC 和定时器输出的 PWM 相结合,组成逐周期的电流控制回路。
目前在微控制器(MCU)上采用MRAM等新兴内存并不普及,主要是因为这些新技术的成本比起NOR闪存或SRAM更高。不过,随着制程微缩超过14nm,预计情况将会发生变化…
随着越来越多具成本效益的应用选择磁阻随机存取内存(MRAM),不仅为其带来了成长动能,业界生态系统也开始支持这一新兴内存选择。
eVaderis最近发布一项超低功耗MCU参考设计的共同开发计划,采用格芯(Globalfoundries)基于22nm FD-SOI (22FDX)平台的嵌入式MRAM技术。两家公司正寻求支持一系列的低功耗应用,例如以电池供电的物联网(IoT)产品、消费和工业MCU,以及汽车控制器。
UART、SPI、IIC是经常用到的几个数据传输标准,下面就分别总结一下:
<strong>UART(Universal Asynchronous Receive Transmitter):</strong>也就是我们经常所说的串口,基本都用于调试。
主机和从机至少要接三根线,RX、TX和GND。TX用于发送数据,RX用于接受数据(收发不是一根线,所以是全双工方式)。注意A和B通信A.TX要接B.RX,A.RX要接B.TX(A用TX发B当然要用RX来收了!)
在了解中断子系统之前,首先要了解中断的概念。你正在看书,这时电话响了,你会怎么做呢?相信大多数人会这样:先标记看到的位置,接完电话回来后继续阅读。这就是一个现实生活中中断的例子,我们把“电话响了”成为中断源。Arduino UNO R3的主处理器ATMega328P拥有26个中断源,如下表所示:
dsPIC33EP128GS808开发板(简称开发板)旨在帮助评估和开发dsPIC33EP“GS”系列数字信号控制器(Digital Signal Controller,DSC)的固件。
本文档介绍了如何使用dsPIC33EP128GS808开发板作为开发工具在目标板上仿真,以及如何调试固件。
谈到内存,我们都会想到PC,对于单片机或者arm来说也是存在内存的,简单的理解是:内存嘛……就是存放东西的地方,只不过这个东西是数据而已,好了,还是把重点放在mcu上面,对于一款mcu来说,在性能描述的时候都会告诉sram,flash的容量大小,对于初学者来说,也不会去考虑和理会这些东西,拿到东西就只用。其实不然,这些量都是十分重要的,仔细想想,代码为什么可以运行,代码量是多少,定义的int、short等等类型的变量究竟是怎么分配和存储的,这些问题都和内寸有关系。
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。
这个原理很好理解。但应用时需要特别注意的几点:
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。
自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了。
<font color="blue">FLASH分类 </font>
STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。
简单的电感电路在低阻抗电路中使用时效果很好,衰减超过40dB,但在高阻抗电路中可能一点效果没有。
单个电容器的电路在高阻抗电路中效果很好,但在低阻抗电路中效果很差。
多元件构成的滤波器会有很好的效果,但前提是必须构造正确,应使电容器面对高阻抗,电感器面对低阻抗。
由于电容器引线具有寄生电感,电阻,实际电容器模型是电容,电感(等效串联电感ESL),电阻(等效串联电阻ESR)串联的结构,具有自谐振频率,电容器应该工作在其自谐振频率之下才能发挥作用。
MOSFET因导通内阻低、开关速度快等优点被广泛应用于开关电源中。MOSFET的驱动常根据电源IC和MOSFET的参数选择合适的电路。下面一起探讨MOSFET用于开关电源的驱动电路。
在使用MOSFET设计开关电源时,大部分人都会考虑MOSFET的导通电阻、最大电压、最大电流。但很多时候也仅仅考虑了这些因素,这样的电路也许可以正常工作,但并不是一个好的设计方案。更细致的,MOSFET还应考虑本身寄生的参数。对一个确定的MOSFET,其驱动电路,驱动脚输出的峰值电流,上升速率等,都会影响MOSFET的开关性能。
当电源IC与MOS管选定之后,选择合适的驱动电路来连接电源IC与MOS管就显得尤其重要了。
一个好的MOSFET驱动电路有以下几点要求:
SPI是一种高速的,全双工同步的通信总线,在芯片管脚上占用了四根线,节约了芯片的管脚,同时为PCB的布局节省了空间,提供了方便,因此越来越多的芯片集成了这种通信协议,STM32也就有了SPI接口。
<center><img width="600" src="http://mcu.eetrend.com/files/2018-04/wen_zhang_/100010982-38645-986.png…; alt="stm32 SPI介绍和配置"></center>
<font color="#FD8900">带互连的高速PWM、ADC、PGA和比较器且适用于数字电源应用的16位数字信号控制器</font>
工作条件
• 3.0V至3.6V,-40°C至+85°C,DC至70 MIPS
• 3.0V至3.6V,-40°C至+125°C,DC至60 MIPS
闪存架构





