DDR 同步动态随机存取存储器 (Synchronous Dynamic Random Access Memory, SDRAM)控制器使用双倍数据速率(Dual Data Rate,DDR)版本 2 协议,并遵从 JEDEC 标准 JESD79-2F(2009 年 11 月)的电气接口来实现对外部存储器总线接口的控制。
组件包括带可配置选项的 DDR SDRAM 控制器内核及 DDR 物理接口。
一直不明白有STM32中AHB总线、APB2总线、APB1总线这些是是什么??
所谓地址映射,就是将芯片上的存储器 甚至I/O等资源与地址建立一一对应的关系。如果某地址
对应着某寄存器,我们就可以运用C语言的指针来寻址并修改这个地址上的内容,从而实现修改该寄存器的内容。
正是因为头文件中有了对于各种寄存器和I/O端口的地址映射,我们才可以在51单片机
程序中方便地使用P2^0 =0xFF; TMOD =0xFF等赋值句子对寄存器进行配置,从而控制单片机。
其实地址总线就是就是用来存放地址的,Cortex-M3的地址映射也是类似的,Cortex-M3有32根地址线,所以它的寻址空间大小为2^32
bit=4GB。(这里什么32跟地址线不需要去纠结了,只要知道配置成了4G的地址就行)
在MCU中(M16),定时器是独立的一个模块,M16有三个独立的定时器模块,即T/C0、T/C1和T/C2;其中T/C0和T/C2都是8位的定时器,而T/C1是一个16位的定时器。定时器的工作是独立于CPU之外自行运行的硬件模块。
1、定时器何时开始工作(或说计数)的?
当TCCR0!=0x00任何模式下,只要MCU一上电,T/C就开始计时工作。其实TCCR0主要是定时器的预分频和波形模式、比较匹配模式的设置,说到预分频,不得不提一下这个模块,这个模块是T/C0、T/C1共用的一个模块,但可以有不同的分频设置。
LCD的接口有多种,分类很细。主要看的驱动方式和控制方式,目前手机上的彩色的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。MCU模式(也写成MPU模式的)。只有TFT模块才有RGB接口。
但应用比较多的就是MUC模式和RGB模式,区别有以下几点:
1.MCU接口:会解码命令,由ming generator产生时序信号,驱动COM和SEG驱器。
RGB接口:在写LCD register setng时,和MCU接口没有区别。区别只在于图像的写入方式。
2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。
1、IIC EEPROM------容量小,采用的是IIC通信协议;用于在掉电时,存系统配置参数,比如屏幕亮度等。常用芯片型号有 AT24C02、FM24C02、CAT24C02等,其常见的封装多为DIP8,SOP8,TSSOP8等;
2、SPI NorFlash------容量略大,采用的是SPI 通信协议;用于存放程序和数据。程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行;可以单字节或单字编程,但
不能单字节擦除,必须以Sector为单位或对整片执行擦除操作。常见到的S25FL128、MX25L1605、W25Q64等型号都是SPI NorFlash。
<strong>【工作模式】</strong>
线程模式(Thread mode):处理器复位或异常退出时为此模式。此模式下的代码可以是特权代码也可以是用户代码,通过CONTROL[0]控制。
处理模式(Handler mode):出现异常(包括中断)时进入此模式,此模式下所有代码为特权访问。
<strong>【代码限权】</strong>
特权访问:对处理器资源拥有完全访问限权;处理器复位后进入此访问模式;清零 CONTROL[0]进入用户模式。
用户访问:禁止访问多数系统寄存器。只能通过进入异常(中断)来返回特权模式。进入异常前是用户级访问,则退出异常时自动回到用户及,除非在异常中修改CONTROL[0]位。
<strong>理解PWM需要知道的知识</strong>
<strong>(1)脉冲</strong>
解释:电子设备中电平状态发生的突变,通常突变时间很短,突变后极短时间后重新变为为原来的电平状态.(突变状态很短,两次突变间的时间相对较长)
<strong>(2)脉冲循环</strong>
本章介绍电机控制脉宽调制器 (Motor Control PWM, MCPWM)模块及其相关的工作模式。PIC32 器件系列中的 MCPWM 模块支持多种 PWM 模式,是电源转换 / 电机控制应用的理想选择。
一些常见应用包括:
• SMPS 应用:
- 交流 / 直流转换器
- 直流 / 直流转换器
• 交流和直流电机 (例如:BDC、 BLDC、 PMSM、 ACIM 和 SRM)
• 逆变器
• 电池充电器
• 数字照明
• 不间断电源 (Uninterrupted Power Supply, UPS)
• 功率因数校正 (Power Factor Correction, PFC)
前面介绍了很多概念知识,做了很多准备工作,从这一节开始,我们正式开始单片机的学习。我们将使用单片机完成一项非常简单的工作:点亮一个发光二极管(即LED:Light-Emitting Diode)。
<strong>LED简介</strong>
<strong>1 、嵌入式软件基础</strong>
(1)嵌入式软件的特点:
A、规模较小。
B、开发难度大。
C、实时性和可靠性要求高。
D、要求固化存储。
(2)嵌入式软件分类:
A、 系统软件:控制和管理嵌入式系统资源,如嵌入式操作系统、驱动程序、中间件等。
B、 应用软件:定义嵌入式设备的主要功能和用途,负载与用户进行交互。
C、 支撑软件:辅助软件开发的工具软件。
(3)无操作系统的嵌入式软件的两种实现方式:
A、 循环轮转
优点:简单、直观、开销小、可预测。
缺点:过于简单,所有代码顺序执行,无法处理异步事件,缺乏并行处理能力。
对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如果优化了程序的执行速度,通常会带来代码增加的副作用,很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。
一、程序结构的优化
1、程序的书写结构
虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个书写清晰、明了的程序,有利于以后的维护。在书写程序时,特别是对于While、for、do…while、if…elst、switch…case 等语句或这些语句嵌套组合时,应采用“缩格”的书写形式,
2、标识符
8位、16位、32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位。以8位为例,8位二进制的表达范围是0000,0000~1111,1111即十进制的0~255,即每次参与运算的数据最大不能超过255。而16位机的字长是16位,其数据表达范围是0~65535,即每次参与运算的数据最大不能超过65535;32位单片机的字长是32位,其数据表达范围是0~4294967295,即每次参与运算的数据最大不能超过4294967295。
8位、16位、32位与单片机的性能密切相关,通常32位机的性能要高于16位机,而16位机的性能又要高于8位机。
为什么会这样呢?这要从2个方面来分析。
在做一款消费电子产品时,需要采集电池电压(3.3V-4.2V),同时在休眠的时候希望尽量减小待机电流。电池电压采集电路采用两个1%的300K电阻进行分压,由该电路引起的待机电路为4.2/(300+300)mA=7uA.此时比较合理(整机的待机电流要求30uA以内)。
本视频将分享PIC24FJ256GB412系列低功耗加密单片机的详细信息。还将展示IOT演示的加密和解密功能,您也可以自行构建该演示。
PIC24FJ256GB412产品系列(PIC24GB4)是16位PIC®单片机,可提供出色的全新安全功能和加密/解密功能,非常适合低功耗嵌入式安全应用。
<iframe height=358 width=510 src='http://player.youku.com/embed/XMzI4NDYyMDYxMg==' frameborder=0 'allowfullscreen'></iframe>
上一篇:<a href="http://mcu.eetrend.com/content/2018/100009766.html">UCOS-III使用的47个知识点!</a>
48、可以人工地计算出任务需要的堆栈空间大小,逐级嵌套所有可能被调用的函数, 添加被调用函数中所有的参数, 添加上下文切换时的CPU 寄存器空间, 添加切换到中断时所需的 CPU 寄存器空间,添加处理 ISRs 所需的堆栈空间。 把上述的全部相加, 得到的值定义为最小的需求空间。 因为我们不可能计算出精确的堆栈空间。 通常是再乘以 1.5 以确保任务的安全运行。
<strong>引言</strong>
对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏。这些的确是消耗了开发人员大多数调试时间的事项。指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是一旦您了解了指针及其关联内存操作的基础,它们就是您在 C 语言中拥有的最强大工具。
本文将与您分享开发人员在开始使用指针来编程前应该知道的秘密。本文内容包括:
●导致内存破坏的指针操作类型
●在使用动态内存分配时必须考虑的检查点
●导致内存泄漏的场景
如果您预先知道什么地方可能出错,那么您就能够小心避免陷阱,并消除大多数与指针和内存相关的问题。
<strong>什么地方可能出错?</strong>
1、uC/OS-III其中最有用的功能应该是时间片轮转法( roundrobin), 这个是 uC/OS-II 中不支持的,但是现在已经是 uC/OS-III 的一个功能了。
2、uC/OS-III 被设计用于 32 位处理器, 但是它也能在 16 位或 8 位处理器中很好地工作。
3、一共有 2 种类型的实时系统:软实时系统和硬实时系统。硬实时系统中,运算超时是不允许发生的,运算超时会导致严重后果。但是在软实时系统中 , 超时不会导致严重后果
4、前后台系统:包含一个无限循环的模块实现需要的操作(后台)。中断处理程序实现异步事件(前台)。前台也叫做中断级,后台也叫作任务级。
(1)点亮第一盏灯:
<span style="font-family:Microsoft YaHei;font-size:18px;">#include<reg52.h>
sbit D1=P1^0;
void main()
{
D1=0;
}
</span>
若要点亮第二盏。改为sbit D2=P1^0;
(2)在reg52.h文件里加入:sbit D1=P1^0;
用于点亮第一盏灯,若要点亮第二盏灯。sbit D2=P1^1;以此类推
<strong>GPIO即通用输入/输出 (General Purpose Input Output)</strong>
包括:
两个32位的配置寄存器 GPIOx->CRL,GPIOx->CRH
两个32位的数据寄存器 GPIOx->IDR,GPIOx->ODR
一个32位的 set/reset 寄存器 GPIOx->BSRR
一位16位的 reset 寄存器 GPIOx->BRR
一位32位的锁定寄存器 GPIOx->LCKR
端口的模式包括:
浮空输入(Input floating)—— 即没有上拉电阻和下拉电阻,电压呈不确定性,一般用来做ADC输入用,这样可以减少上下拉电阻对结果的影响
某些特定PIC32系列器件最多可实现八个运放/比较器模块。一些模块无法实现运放,这些模块称为独立比较器模块,以区别于可同时实现比较器和运放的标准类型。当一个器件上可同时实现运放和比较器时,可对二者单独使能。运放/比较器模块实例的实际数量因器件而异。此外,每个器件至少实现一个“仅比较器”或“独立”模块。





