点击“蓝字”关注我们

3110月

收藏 | STM32单片机超详细学习汇总资料(一)

◆41.DMA仲裁器分为软件和硬件两种。软件部分分为4个等级,分别是很高优先级、高优先级、中等、低。硬件部分由通道的大小来决定优先级,越低优先级越高。

◆42.DMA有一个实时的传输数据量寄存器叫做DMA_CNDTR,最大值为65535,存放的是当前传输所要传输的数据量。当数据量变为0时,表明传输完成。

◆43.CAN总线(ControllerArea Network)。CAN控制器根据两根线上的电位差来判断总线电平,总线电平又分为显性电平和隐性电平,二者必居其一。

◆44.CAN总线具有6个特点:

①多主控制

②系统若软性

③通讯速度较快,通讯距离较远

④具有错误检测、错误通知和错误恢复功能

⑤故障封闭,当总线上的设备发生连续故障错误时,CAN控制器会把改控制器踢出总线

⑥连接节点多。理论上可以无限制加载,但是受到时间延迟和电气负载的限制,实际数目是有限制的。降低传输速度可以适当增加可挂接负载个数。

◆45.CAN协议有两个标准,ISO11898(针对125kbps~1Mbps的高速速率)和ISO11519-2(125kbps以下的低速速率)

◆46.

◆47.CAN协议的有5种类型的帧:数据帧、遥控帧、错误帧、过载帧、帧间隔。其中前两种帧有标准格式(11位ID)和扩展格式(29位ID)。

◆48.数据帧构成:

(1) 帧起始。表示数据开的段帧起始。

(2) 仲裁段。表示该帧优先级的仲裁段。

(3) 控制段。表示数据的字节及保留位段。

(4) 数据段。数据的内容,一帧可发送0~8个字节的数据。

(5) CRC段。检查帧的传输错误段。

(6) ACK段。表示确认正常接收的段。

(7) 帧结束。表示数据的段帧结束。

◆49.Stm32f103系列只有一个CAN控制器,有3个发送邮箱和3级深度的2个FIFO,14个过滤组器。

◆50.STM32的每个过滤组可以配置为1个32位过滤器和2个16位过滤器。除此之外,还可以配置为屏蔽位模式(ID+屏蔽)和标识符列表(ID和屏蔽寄存器均用来做ID寄存器)模式。

◆51.CAN接收到有效报文被放置在3级邮箱深度的FIFO中,FIFO完全由硬件来管理。

◆52.CAN总线的波特率

◆53.触摸屏一般分为电阻式触摸屏和电容式触摸屏。前者检测触摸的位置原理是利用触摸屏控制器中的A/D转换器经过两次A/D读值后得出X和Y的坐标值。注意:这个X和Y的值是相对于触摸屏的,而非LCD屏。

所以在这里需要注意两个概念:触摸屏和LCD屏。这是两个不同的概念,也是两个不同的物理结构,其中电阻触摸屏是由上下两个导电层中间夹着一层非常薄的透明隔层;而LCD就是指显示屏。

◆54.电阻触摸屏有X和Y、X和Y的比例因子、坐标轴方向、偏移量。LCD也有自己的这些参数。两者完全不相干,所以在定位的时候需要进行坐标转换。公式:

通过对屏幕的四个点进行校准,得到四元一次方程,求解即可。

◆55.NEC协议的数据帧格式:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码、控制反码均是8位数据格式。按照低位在前,高位在后的顺序发送。

◆56.NEC协议在发送的时候,会有560us的38KHz的载波信号,而在接收的时候这部分载波信号被认定为低电平,而剩余的(2.25ms-650us)的逻辑“1”和(1.12ms-650us)的逻辑“0”时间则被认定为高电平。

◆57.在单位时间内的位移被定义为速度,速度有线速度和角速度之分,分别对应两种传感器测量这两种不同的速度:线速度传感器(加速度计)、角速度传感器(陀螺仪)。

前者多应用在静态或者低慢速运动中的姿态求解,后者多应用在动态运动中姿态求解。

◆58.根据标准约定,零加速度(或零 G 准位)通常定义为相当于最大输出值(12 位输出为 4096,10 位输出为 1024 等)一半的输出。对于提供 12 位输出的加速度计,零 G 准位将等于 2048。

输出大于 2048 表示正加速度。输出小于 2048 表示负加速度。加速度的数量通常用单位 g (1g = 9.8m/s2 = 重力加速度)表示。

通过确定测量的输出与零 G 准位之间的差值,然后除以加速度计的灵敏度(用计数/g 或 LSB/g表示)来计算加速度。

对于提供 12 位数字输出的 2g 加速度计,灵敏度为 819 计数/g 或 819 LSB/g。加速度等于:a = (Aout - 2048)/(819 计数/g),单位为 g。

◆59.加速度计测得的加速度的方向和设备设定的坐标系是相反的,因为原理表明在测量力的时候采用的是非惯性系参考系,而我们高中时代研究的坐标系是惯性系参考系,前者在物体进行运动产生加速度时,假想一个与速度方向相反的力作用在物体上,这个力就是惯性力;

后者我们说不存在惯性力,只说存在惯性,因为在惯性坐标系中,我们研究的是物体,而非坐标系(即假定坐标系相对地球静止),当我们把坐标系也考虑在内时,当坐标系运动,就产生了惯性力f,这种力作用会假想作用在物体上,只是与运动方向相反。

◆60.由上可知,加速度计的本质是测量力而非加速度。

◆61.NRF24L01工作在2.4GHz的频段,由于频段频率较高,所以传输速率较快,为2Mbps。

◆62.STM32的闪存模块由:主存储器、信息块和闪存存储器接口寄存器3个部分构成。

主存储器用来存放代码和const常量;信息块由两个部分组成:启动程序代码、用户选择字节。

其中启动程序代码为ST公司自带的启动程序,用于串口下载。

最后的闪存存储器接口寄存器用于控制整个对闪存区域的操作。

◆63.CPU的运行速度比FLASH的操作速度快的多,一般FLASH的最快访问速度≤24Mhz。如果CPU的速度超过这个频率,那么在读取FLASH的时候必须加入等待时间(FLASH_ACR设置)。

◆64.FLASH编程时,写入必须为半字(16位)。并且在写入的时候必须保证所写区域的数据必须为0xFFFF。

◆65.STM32的FSMC有HADDR[27:0],其中[27:26]用来选择BANK区域的4个不同块。

剩下的[25:0]则用来连接外部存储区域的地址线FSMC_A[25:0]。

如果数据宽度是8bit,此时的HADDR[25:0]和FSMC_A[25:0]是完全对应的。

如果数据宽度是16bit,此时的HADDR[25:1]和FSMC_A[24:0]是对应起来的。

需要注意:无论数据宽度是多少,外部的FSMC_A[0]和A[0]总是对应的。

◆66.关于LB和UB的信号控制是由硬件自动控制的,当AHB的数据宽度小于外部存储器的数据宽度时,此时LB和UB的控制信号自动产生(比如字节读取/写入16bit的外部存储器)。

◆67. __attribute__ (函数属性、变量属性、类型属性等)。如果在使用SRAM时,可以采用u32 sram_array[xx] __attribute__ ((at(0x68000000))代表将外部SRAM的空间全部给了sram_array这个变量,他具有在at0x68000000这个地址的属性。

往里面写值就直接在SRAM里面写值。

◆68.

内存管理有一种方式叫做分块式内存管理。

注意表中的分配方向,从顶到底。每一项对应一个内存块。里面的数值代表了内存池的状态:如果为0,表示该内存没有被分配;如果非0,那么数值的大小就表示了该块内存被连续占用的内存数。

比如说数值为20,意思是包括该项在内的内存块被连续占用了20块分给了指针。

◆69.SD卡的分类:

一般的SD卡支持两种传输模式:SD卡模式(SDIO)、SPI模式。显然前面一种是专用模式,所以速度比较快。

◆70.常用的汉字内码系统有GB2313、GB13000、GBK、BIG5(繁体)。其中GB2313只有几千个汉字,而GBK则有2万多汉字。

◆71.要显示汉字,采用的方式如果用点阵的形式是不可取的,因为这无法查找汉字。采用的方式就是内码系统。

GBK标准中,一个汉字对应2个字节:前者称为区(0x81~0xFE)后者为(0x40~0x7E)和(0x80~0xFE)。前者有126个区,后者有190,那么可以显示的汉字数量有126*190=23940个。

根据这两个值用来查找字库,字库中存放的还是每个汉字的点阵数据。

这个字库非常大,如果是16*16的字体,那么一个字体就需要32个字节,如此说来需要23940*32=748K的空间,可见非常大,所以需要外部的Flash来存储这个字库。

◆72.由于汉字内码系统不具有国际通用性,但是Unicode几乎把所有的语言都放置进来,这样在单片机中操作汉字时,就需要将GBK和Unicode转化。

尤其是在FATFS中,创建中文文件名和读取中文文件信息时需要将Unicode换转为GBK后再进行修改操作,再反转换成Unicode保存修改。

这么说,两者的存在是由于标准的不统一,并且Unicode中只有6064个汉字,而GBK显然是一种汉字扩展。

◆73.BMP图片编码的顺序是从左到右,从下到上。

◆74.VS1053是一款高性能的数字音频解码芯片,从SD卡中将mp3等音乐音频文件通过SPI送给VS1053后,由其进行音频解码,输出音乐给耳机。

耳机驱动可以采用TDA1308芯片,这款芯片为AB类耳机驱动芯片。

◆75.IAP(In Application Programming)在应用编程是为了后期开发更新程序方便而提出的概念。具体的实现方法如下图所示:

在普通编程中,flash中的code是通过JTAG和ISP等工具下载到单片机中。

而在IAP编程中,flash被分区为A和B两个区域,A区域只允许用USB/USART等方式下载,此区域作为更新B区域的代码用。

B区域则是用户的code区域,真正的代码在这里被执行,放置的就是app。

上图表示STM32正常运行的流程图,可以看到上电复位后系统从0x80000004处开始运行程序,这里放置的是复位中断向量,然后跳转至复位中断程序入口后再跳转至main函数运行用户的程序。

上图表示加入IAP后的STM32程序运行流程图。可以看到上电复位后跳到IAP程序的main函数处运行IAP过程(这个过程就是把下面灰底色块的程序代码烧进B区域à代码更新)。

后面的过程和STM32正常运行一样,如果出现中断请求,还是跳转到A区域中的中断向量表中,然后再跳转到B区域的中断服务入口。

◆76.USB有四根线,VCC、GND、D+、D-。在USB主机上,D+和D-均通过一个15K的电阻接地,这样两条线均为低电平。

在USB设备中,对于高速设备会在D+通过一个1.5K的电阻接到VCC,而低俗设备会在D-通过一个1.5K的电阻接到VCC。

这样主机就可以通过D+和D-的高电平的到来来检测是否有设备接入,并且识别高低速设备。

◆77.UCOSII是一种实时操作系统,具有执行效率高、占有空间小(最小内核2KB)、实施性能优良、扩展性强和移植性强等优点。

UCOS具有多任务并发工作的特点(注意,任何时候只有一个任务能够占用CPU。并发只是任务轮流占用CPU而不是同时工作)。

最大支持255个任务并发工作。

捷配免费打样券领取火爆进行中:

长按识别加入PCB设计工程师交流群

你“在看”我吗?

stm32怎么加载字库_收藏 | STM32单片机超详细学习汇总资料(二)相关推荐

  1. stm32怎么加载字库_如何用STM32的片内Flash存储中文字库

    原标题:如何用STM32的片内Flash存储中文字库 在 中,成本往往是敏感的,如果你的Flash足够大,就可以省去片外Flash,我用结构体实现了该功能,并分享给广大网友,最后附有下载链接. 在fo ...

  2. vue 判断页面加载完成_在Vue+webpack中详细讲解基础配置

    这篇文章主要介绍了Vue+webpack项目基础配置教程,需要的朋友可以参考下. 最近在学习webpack,跟着课程一个单页面应用,在这里记录一下. 这个部分主要讲了如何配置webpack的环境,以及 ...

  3. stm32怎么加载字库_STM32如何实现W25X16的汉字字库存储

    系统中使用过多的汉字会出现芯片容量不够用的问题,可将数据存储在外部FLASH中,在需要使用时进行调用即可.本文是通过STM32串口1实现对W25X16的汉字字库存储.软件层面,配置串口1和SPI1即可 ...

  4. stm32分散加载学习_倡导联合学习的天才使隐私分散化

    stm32分散加载学习 Chances are, your phone is within five feet of you right now. 您的手机现在离您的五英尺以内. In fact, a ...

  5. unity 加载关卡_Unity5.0_Application.isLoadingLevel 正在加载关卡_软件教程_资源库

    摘要:Unity5.0_Application.isLoadingLevel 正在加载关卡_软件教程_资源库 Application.isLoadingLevel 正在加载关卡? static var ...

  6. prefetch 和preload_资源预加载preload和资源预读取prefetch简明学习

    前面的话 基于VUE的前端小站改造成SSR服务器端渲染后,HTML文档会自动使用preload和prefetch来预加载所需资源,本文将详细介绍preload和prefetch的使用 资源优先级 在介 ...

  7. 【IoT】STM32 分散加载文件 .sct 解析

    1.STM32 启动文件与 .sct 文件分析 1) 定义STACK段,{NOINIT,读写}:分配一段内存大小为0.5K; 2) 定义HEAP段, {NOINIT,读写}:分配一段内存大小为1K; ...

  8. STM32分散加载文件

    通过使用分散加载机制,可以为链接器指定映像的内存映射.分散加载为您提供了对映像组建分组和位置的全面控制.分散加载可以用于简单映像,但它通常仅用于具有复杂内存映射的的映像,即多个区在加载和执行时分散在内 ...

  9. vue按需加载组件_微人事首页加载速度提高了 5 倍,我都做了什么?

    「本文之前发过,但是比较零散,这里我把用到的方案都汇总一下,方便大家索引,有需要的小伙伴可以收藏下方便查找.里边提到的几种方案,大家都可以对照着视频试一下」 ElementUI 按需加载: 服务端开启 ...

最新文章

  1. Java关键字及其作用
  2. python 如何判断一个函数执行完成_Python核心编程的四大神兽迭代器、生成器 、闭包以及装饰器...
  3. ping 用数字串代替IP地址
  4. 单例模式应用场景_三、单例模式详解
  5. python解释器有哪几种_Python解释器种类以及特点?
  6. AI应用开发实战系列之一: 从零开始配置环境
  7. 你好,面试官 | 你拿Java Map考验老干部?
  8. glusterfs java_GlusterFS分布式文件系统使用简介
  9. Spring : @ComponentScan注解
  10. pc控制iphone的软件_哪个备忘录便签app可以和PC电脑一块儿用
  11. 【linux(1),八年Java开发心路历程
  12. .NET项目工程生成一份项目帮助文档chm--Sandcastle工具
  13. http code 000
  14. 面试:Android网络优化
  15. 微信小程序登录界面的实现
  16. 潘多拉网吧防火墙 1.0 双线破解
  17. win10局域网 开启网络发现,无法找到本机
  18. 修改 exchange服务器地址,绑定exchange邮箱服务器地址
  19. markman,让设计更有爱!
  20. 计算机专业的学生怎样练习编程才能把编程学精通啊?

热门文章

  1. 3. 回归的线性模型(2)
  2. cookie文件是存放在服务器端,http - 服务器端cookie和客户端cookie之间有什么区别?...
  3. 【数理知识】《矩阵论》方保镕老师-第7章-几类特殊矩阵与特殊积
  4. matlab从图表中提取数据
  5. 【发布】温度监测报警器v1.1a内测版!
  6. 1至m为PQ节点,m+1至n-1为PV节点,n为平衡节点
  7. PHP获取当前域名$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']的区别
  8. LC77 Combinations
  9. Cloud Test 单页面即时监测功能上线!
  10. windows 2008 server R2 版本概览