联系方式

    深圳市英瑞尔芯科技有限公司

    电话:

    186 6591 0262

    E-mail:

    sally@szinter.com.cn

    地址:

    深圳市福田区振华路现代之窗A座7B

STM32单片机学习笔记

发布时间:2021-12-22 18:47:00

来源:http://www.szinter.com.cn/news741595.html

嵌入式开发直播课 - STM32 LoRa打造出LPWA物联网系统 - 创客学院直播间

1、 AHB系统总线分成APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接快速机器设备

2、 Stm32f10x.h等同于reg52.h(里边有基础的位操作界定),另一个为stm32f10x_conf.h专业操纵外部元器件的配备,也就是电源开关库函数的功效

3、 HSE Osc(High Speed External Oscillator)快速外界晶振电路,一般为8MHz,HSI RC(High Speed InternalRC)快速內部RC,8MHz

4、 LSE Osc(Low Speed External Oscillator)低速档外界晶振电路,一般为32.768KHz,LSI RC(Low Speed InternalRC)低速档內部晶振电路,大约为40KHz上下,给予看门狗1钟表和全自动唤起模块钟表源

5、 SYSCLK钟表源有三个来源于:HSI RC、HSE OSC、PLL

6、 MCO[2:0]可以给予4源不一样的时钟同步数据信号,PA8

7、 GPIO口好像有两个反方向并联的二极管作为钳位二极管。

8、 系统总线引流矩阵选用交替优化算法对系统总线和DMA开展诉讼

9、 ICode系统总线,DCode系统总线、系统总线、DMA系统总线、系统总线引流矩阵、AHB/APB桥

10、在应用一个外接设备以前,务必设定存储器RCC_AHBENR来开启该外接设备的钟表

11、数据信息字节数以小端储存方式储存在储存器中

12、 内存映射区别为8个块状,每一个块为512MB

13、 FLASH的一页为1K(小容积与立容积),大空间是2K。

14、 系统软件储存区(SystemMemory)为ST企业在出厂配备锁起来,客户没法编缉,用以对FLASH地区开展再次程序编写。因此大家烧写程序尽量挑选BOOT1 = 0,那样根据嵌入的自举程序流程对FLASH开展烧录,例如中断向量表和编码

15、 STM32关键工作电压为1.8V

16、 STM32校准有三种:系统软件校准、通电校准、备份数据地区校准。在其中系统软件校准除开RCC_CSR中的校准标示和BKP中的标值不校准以外,别的的全部存储器所有校准。开启方法比如外界校准、看门狗1校准、APP校准等;开关电源校准因为外界开关电源的通电/断电校准或是休眠方式回到。校准除开BKP中的存储器值没动,别的所有校准;备份数据地区校准的开启源为APP校准或是VDD和VBAT所有断电时。

17、 单片机设计校准后全部I/O口均为悬空键入情况

18、 68个可屏蔽掉终断安全通道,16个可编优先,16个核心终断,一共68 16=84个终断。103系列产品仅有60个终断,107系列产品才有68个终断

19、 开机启动从0x00000004逐渐,0x000 0000保存

20、 (NestedVectored Interrupt Controller)NVIC嵌入空间向量终断控制板,分成二种:提前式优先(可嵌入)和终断优先(副优先,不可以嵌入)。二种优先由4位二进制位决策。分派出来有十六种状况:

21、0号提前优先的终断,可以切断一切终断提前优先为非0号的终断;1号提前优先的终断,可以切断一切终断提前优先为2、3、4号的终断;……;组成终断嵌入。假如2个终断的提前优先同样,谁先发生,就先回应谁,不组成嵌入。假如一起发生(或挂在那里等候),就可以看他们2个谁的子优先高了,假如子优先也同样,就可以看他们的中断向量部位了。原先中断向量的部位是最后的决定要素!!!!

22、 通电复位后AIRC复位为0,为16个提前式优先,可是因为全部的内部安全通道终断优先操纵字PRI_n为0,因此提前式优先同样,这时就不可以嵌入了

23、 NVI中有ISER[2](Interrupt Set-Enable Registers),ICER[2](Interrupt Clear-Enable Registers),ISPR[2](Interrupt Set-Pending Registers),ICPR[2](Interrupt Clear-Pending Registers),IABR[2](Active Bit Registers),IPR[15](InterruptPriority Registers)界定。在其中ISER和ICER各自为终断也就能和终断失能老人存储器,全是写1来也就能/失能老人终断的。为何写1?为什么不选用一个存储器而用2个存储器来表明终断也就能/失能老人情况?因为硬件配置,写0较为复杂,而且有可能导致别的位的情况更改,因此用1来表明开启或是关闭是非常有效的

24、 终断标志位必须手动式消除

25、 配备外部元器件的一般流程:1、打开端口钟表。2、界定复位结构体并复位。3、读取

26、串口通信的奇偶校验:如果是奇偶校验,那麼USART_InitStructure.USART_WordLength= USART_WordLength_9b;这一数据信息的长短务必设置为9位!

27、ADC的标准组可以自定变换安全通道次序和变换的安全通道数量。在具体运用中,有时期待有一些很小的安全通道具备很高的所有权,必须在标准组开展变换的情况下强制性切断,开展另一个安全通道的变换,那样一组安全通道,称为引入组。

28、计时器的效果较为方式:Timing(冻洁,什么事都不做,一般按时),Active(OCxREF导出高电平合理),Inactive(OCxREF导出低电频),Toggle(较为取得成功后旋转脉冲信号)。

29、STM32的计时器从0逐渐记数,达到一些标准,得出标志位(例如配对取得成功、時间升级、外溢等)随后从0逐渐记数。这一点和51不一样。

30、OCx=OCxREF 正负极

31、全自动运载存储器和身影存储器:前面一种等同于51之中的外溢设置标值。而身影存储器说白了是身影,便是存储器的另一分copy。具体起功效的是身影存储器,而程序猿控制的则是全自动运载存储器。假如APPE位也就能,表明全自动运载存储器的值在下一次升级事情发生后才载入新值。不然,载入全自动运载存储器的值会被马上升级到身影存储器。

32、RCC_PCLK1Config(RCC_HCLK_Div4);PCLK1的4分音器给计时器标准钟表

33、计时器配备:RCC、NVIC、GPIO(OC导出或是PWM)、TIMx

34、通用性计时器可以导出4路不一样的PWM,高級计时器可以导出4路不一样的PWM外,还能够导出3路相辅相成的PWM信号(推动三相电机),一共有7路。那样算出去STM32可以造成30路PWM=7*2 4*4

35、

36、高級计时器钟表源挂在了APB2上,而通用性计时器挂在APB1上。AHB(72mhz)→APB1分频器(默认设置2)→APB1时钟信号(36mhz)→倍频器(*2倍)→通用性计时器时钟信号(72mhz)。假如APB1沒有分音器,那麼通用性计时器的时钟信号工作频率就立即相当于APB1的时钟频率,沒有以上的倍频器*2全过程。TIM_SetAutoreload()用于更改PWM的工作频率,TIM_SetCompare1()用于更改pwm占空比

37、有刷电机一般运行扭矩大一些,直流无刷电机运行扭矩小,运作起來扭矩大。有刷电机选用炭刷机械设备电流量换相,而直流无刷电机则根据霍尔传感器测到电机转子的电流量来分辨电动机的健身运动部位和方位,回到给控制电路。

38、过流保护是务必要有的,由于这牵涉到电源电路的断路问题。可控硅在换相的过程中必须过流保护時间来完全关闭路线

39、刹车踏板作用用于在控制电路发生问题时,硬件配置全自动给与外界电动机开展应急刹车踏板刹车,反映在PWM上不断得出一个固定不动的pwm占空比?(三相推动也是?)

40、PWM导出最好是选用PWM方式,别的的较为导出方式相位差会渐渐地更改,不精确

41、对FLASH的读写能力必须先开启后上锁。FLASH写0非常容易,写1难。

42、烧录有这两种方法,一种为ICP(可视化编程),适用JTAG或SWD协义下的烧写程序。另一种变成IAP(在运用程序编写),适用许多插口(USB,串口通信,CAN)在线下载到储存器中,IAP容许在程序执行时再次烧录FLASH

43、FLASH分成主存储器(这儿置放客户的编程代码)和信息内容块(运行编码),此外,也有一部分称为系统软件储存器,这一块客户不能实际操作,为ST企业生产后干固,为操作系统的通电自举程序流程

44、FLASH在写的情况下,一定不可以读,如果有读实际操作,那麼可能锁定系统总线

45、对FLASH实际操作时,务必开启HIS

46、STM32有二种看门狗1(IWDG单独看门狗1《独立时钟》,WWDG对话框看门狗1《由APB1分频而来》)

47、SPI的的最大工作频率为36MHz(fpclk/2)

48、 TIM1和TIM8高級计时器在导出PWM时,必须配备一下主导出作用(CtrlPWMOutputs)才可以导出PWM。别的的通用性计时器不用那样配备。可是TIM6和TIM7沒有PWM导出作用。

49、Code为编程代码一部分

RO-data 表明程序定义的变量定义(如:const temp等);

RW-data 表明已复位的局部变量

ZI-data 表明未复位的局部变量,及其复位为0的自变量

Code, RO-data,RW-data..............flash

RW-data, ZIdata...................RAM

复位时RW-data从flash拷到RAM

50、STM32F103ZET6有144个管脚(Z为144),在其中,可以用IO口为112个(7X16=112,ABCDEFG口)

51、ARM企业只生产制造核心规范,不生产制造集成ic。ST、TI那样的企业从ARM企业那边选购核心,随后另加自身的系统总线、外接设备、储存器、自始至终和校准、I/O后就构成了自个的集成ic。

52、CMSIS规范用以在往上的粉丝层和下边的硬件配置层互换信息内容。这一构架当然可以自身界定,可是那样的话便会沒有规范。因此强制性应用CMSISI规范设计制作集成ic。简单点的讲便是系统软件复位的函数公式名字CMSIS界定为SystemInit(),GPIO_ResetBits()等

53、端口号重复使用和端口号重投射是2个定义:前面一种在也就能其相匹配的端口号和相匹配的作用钟表就可以。后者必须开启AFIO钟表,随后开展端口号的重投射GPIO_PinRe ** pConfig()

54、烧录只有应用串口通信1,在硬件开发时一定要留意!

55、J-TAG调节工作频率一般设置为2MHz,而SWD调节工作频率可以设置为10MHz

56、SysTick的终断完成可以有这两种方法:循环系统等候和终断法。强烈推荐用循环系统等候,终断法也许会出问题并且占有資源。

57、一部分I/O管脚是5V兼容的。单独一个I/O的较大工作电压和灌进电流量均为25mA。全部车辆的工作电流为150mA

58、KEIL适用位段实际操作,可以运用C语言中的位段专业知识界定位段结构体,随后对独立的存储器开展独立的位操作。

59、有关內部上下拉电阻的设定:假如外界的功能键另一头接地装置,那麼必须设置成上拉电阻。(原因是当沒有启动功能键时,因为下拉,键入为高电平;按住时,因为外界接地装置,键入为低电频。)同样,假如外界的功能键另一头接高电平,那麼必须设置成下拉电阻。

60、串口通信终断TXE和TC的差别:实际上很显著,一个是推送存储器空标示,一个是推送进行标示。由于串口通信在推送的过程中最先必须把推送存储器中的数据信息挪动到移位寄存器(身影存储器)后再串行通信推送出来。因此当推送存储器DR空时表明如今很有可能已经往外传送数据,数据信息很有可能都还没推送完。可是推送进行不一样,他是在移位寄存器将此次数据信息所有挪动进行后设定的标志位(也就是推送完后终止位)。那么来看:TXE容许程序流程有更充足的時间填好TDR存储器,确保推送的数据流分析无间断。TC可以让程序流程了解推送完毕的准确時间,有益于系统控制外界数据流分析的时钟频率。

61、对话框看门狗1说白了有一个对话框,这一对话框的横坐标轴为時间,意思是在规定的时间段内更新存储器,不然单片机设计校准。对话框的限制由人来设置W[6:0],退出定死为0x40Twwdg=(4096×2^WDGTB×(T[5:0] 1)) /Fpclk1;Twwdg为请求超时時间ms,Fpclk1为APB1钟表KHz,

62、TIMx通用性计时器有4个单独安全通道,各自可以拿来做为:键入捕获、较为导出、PWM转化成、脉冲方式导出。

63、计时器的钟表来源于有4个:內部钟表(CK_INT),外界钟表方式1(TIx),外界钟表方式2(ETR),内部触发模式(ITRx,这个用来定时器的同步)

** 、定时器中断溢出更新时间:Tout=((arr+1)*(psc+1))/Tclk,ARR为自动装载寄存器(1~65535)、PSC为分频系数,TCLK为输入时钟频率(Mhz)

65、PWM1和PWM2模式的区别仅在于相位的180度。前者高电平时,后者低电平。感觉好鸡肋,OCxREF极性就可以实现这个功能。。

66、定时器输入捕捉有一个滤波器,顾名思义滤波器起到的就是滤波的作用,在捕捉外部信号时,信号可能不稳定,此时需要滤波:当检测到有外部输入时,需要再连续采样N次如果确定为高电平/低电平,则触发响应中断(如果开启了的话)。

67、电容触摸屏原理:通过充放电的曲线不同来检测是否被按下。 实际的实验过程中,TPAD可以用一块覆铜区域来替代,通过电容的充放电常数来确定是否按下。

68、OLED,即有机发光二极管(OrganicLight-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display,OELD)。下图为OLED的GRAM与屏幕的对应表

PAGE2单独列出来:

69、USART可以操纵SPI设备。不过最大频率只有4.5MHz

70、使用I/O口时应该注意的问题

71、ADC的Vref+和Vdda与VSS,Vref-一定要加高质量的滤波电容,切靠近单片机。

72、ADC分为规则组和注入组,前者有16个通道,后者有4个通道。并且16个通道公用一个数值寄存器,注入组的4个通道分别有一个数值寄存器。

73、采样频率越高,输入阻抗要求越小。

74、Stm32进入中断的最短周期为6个周期

75、

76、

77、F ** C,即灵活的静态存储控制器。能够与同步或异步存储器和16位PC存储器卡接口,STM32的F ** C接口支持包括SRAM、NANDFLASH、NORFLASH和PSRAM等存储器。

78、平时所说的U盘里的FLASH存储器有两种类型:NANDflash和NOR flash。

NAND FLASH

NOR FLASH

不能直接运行里面的代码

可以直接运行里面的代码

写入和擦除速度快

写入和擦除速度慢

读取速度稍慢

读取速度稍快

擦写周期100万次

擦写周期10万次

成本低,容量高

成本高,容量低

一般为串行接口

有SRAM接口

79、TFT在操作时,可以当作外部SRAM来操作,这样的话,如果单片机有F ** C接口,就可以使用NORFLASH的SRAM接口去控制,速度非常快。

80、Stm32的的F ** C有4个256MB的存储块,一共寻址1GB的外部存储器空间。

81、在STM32内部,F ** C的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过F ** C转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。

82、F ** C中的DATASET和ADDSET的设置需要参看外部存储器的时序图来确定。一般而言,DATASET指的是数据建立时间,也就是读/写信号开始到读/写信号停止(上升沿存储数据)的持续时间。(一般来说写比读快!)。而ADDSET指的是地址建立时间,指的是片选之后到读/写操作之前的时间,这是针对SRAM来说的,如果操纵的是TFT,不存在地址线,所以此时的ADDSET就是读/写信号结束到RS电平的转换时间。

83、

84、

85、F ** C的三个配置寄存器:F ** C_BCRx(片选控制配置)、F ** C_BTRx(片选时序)、F ** C_BWTRx(片选写时序)。

86、 RTC时钟配置必须要用到BKP寄存器,BKP寄存器在单片机复位、电源复位、待机唤醒模式下是不会更改值的,他的供电由VDD供电,VDD被切断后自动切换至外部的VBAT供电。

87、 要修改BKP寄存器的值,必须取消其写保护的标志。BKP寄存器在上电时自动写保护。

88、 Stm32有三种省电模式:

三种省电模式中,耗电量从上到下依次降低,待机模式的电流仅为2uA。

89、 从待机模式中唤醒单片机等效于让单片机复位,但是电源寄存器的值会有一个标志位指示单片机是被唤醒的,不是被复位的。

90、 ADC的时钟不要超过14MHz,否则转换精度会下降。最大转换速率为1MHz,即转换周期为1us(14MHz,采样周期为1.5个ADC时钟)

91、 Tcovn=采样时间+12.5个周期。采样时间尽量选长一点,这样精度高一些,但是转换速率下降,这也是有利必有弊。

92、

93、 拿ARM7TDMI来说,T代表Thumb指令集,D是说支持JTAG调试(Debugging),M意指快速乘法器,I则对应一个嵌入式ICE模块。

94、 MMU作为嵌入式处理器与应用处理器的分水岭标志à具有内存管理单元的嵌入式处理器可以定位为应用处理器。这么说M系列和A系列的处理器的区别在于A系列的处理器具有MMU单元可以进行内存模块的管理。

95、ARM处理器有两种状态:ARM状态和Thumb状态。

96、 这张图说明了一切:Thumb2指令集做了一件很伟大的事情:将16位和32位的指令集融为一体,兼容性非常强!(这么说CM3不支持某些32位ARM指令集??)

97、

98、MSP是系统复位后使用的堆栈指针,PSP由用户的代码使用。两个堆栈指针为4字节对齐!!

99、在ARM编程领域中,凡是打断程序运行的事件,统称为异常(exception)。

100、 因为存在LR(链接寄存器),所以可支持1级的子程序调用而不用压栈到内存,大大提高了运行速度。---à这就是说,我们在编程的时候,一级调用是不会耗费太多时间的,除非是二级调用!

101、 处理器有两种操作模式:handler模式和线程模式。

处理器也有两种特权分级:特权级和用户级。 这张图说明了一切:复位进入特权级线程模式,如果有异常,进入特权级的handler模式处理异常或中断例程,然后返回至特权级线程模式。通过修改CONTROL寄存器可以进入用户级线程模式。

102、 两个高级定时器TIM1和TIM8是挂接在APB1总线上

103、 STM32的外部中断是以组来区分的,也就是说PA0,PB0,PC0单片机是无法区分其中哪个触发的中断à均为EXIT0线中断服务例程。所以,外部中断支持16路的中断分辨率。从另一个方面来讲,我们可以设置GPIO_EXTILineConfig(GPIO_PortSourceGPIOx, GPIO_PinSourcex);来开通中断线实现组内的不同中断。

104、 DAC有两个寄存器,一个是DHR(Data HoldingRegister)数据保持寄存器,一个DOR(Data Output Register)数据输出寄存器。真正起作用的是DOR寄存器,该寄存器把值给数模转换发生单元输出以VREF+为参考电压的电压值。如果是硬件触发转换,系统将在1个ABP时钟周期后把值给DOR,如果是软件触发转换,时间为3个APB时钟周期。然后,均等待Tsetting时间(Typical为3us,Max为4us)后真正输出电压值。

105、 DAC分8位模式和12位模式,其中后者可以选择左右对齐

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

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

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

109、 CAN总线具有6个特点:1:多主控制(挂接在总线上的所有设备均可以成为主设备,并且设备ID是用来决定设备的优先级,没有设备地址概念),2:系统若软性(没有设备地址概念),3、通讯速度较快,通讯距离较远(1Mbps下40M,5kbps下10KM),4、具有错误检测、错误通知(通知其他设备)和错误恢复功能(强制结束发送,重复发送接收错误的信息。),5、故障封闭,当总线上的设备发生连续故障错误时,CAN控制器会把改控制器踢出总线。6、连接节点多。理论上可以无限制加载,但是受到时间延迟和电气负载的限制,实际数目是有限制的。降低传输速度可以适当增加可挂接负载个数。

110、 CAN协议有两个标准,ISO1 ** 8(针对125kbps~1Mbps的高速速率)和ISO11519-2(125kbps以下的低速速率)

111、

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

113、 数据帧构成:

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

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

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

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

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

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

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

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

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

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

117、 CAN总线的波特率

118、 触摸屏一般分为电阻式触摸屏和电容式触摸屏。前者检测触摸的位置原理是利用触摸屏控制器中的A/D转换器经过两次A/D读值后得出X和Y的坐标值。注意:这个X和Y的值是相对于触摸屏的,而非LCD屏。所以在这里需要注意两个概念:触摸屏和LCD屏。这是两个不同的概念,也是两个不同的物理结构,其中电阻触摸屏是由上下两个导电层中间夹着一层非常薄的透明隔层;而LCD就是指显示屏。

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

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

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

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

122、 在单位时间内的位移被定义为速度,速度有线速度和角速度之分,分别对应两种传感器测量这两种不同的速度:线速度传感器(加速度计)、角速度传感器(陀螺仪)。前者多应用在静态或者低慢速运动中的姿态求解,后者多应用在动态运动中姿态求解。

123、 根据标准约定,零加速度(或零 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。

124、 加速度计测得的加速度的方向和设备设定的坐标系是相反的,因为原理表明在测量力的时候采用的是非惯性系参考系,而我们高中时代研究的坐标系是惯性系参考系,前者在物体进行运动产生加速度时,假想一个与速度方向相反的力作用在物体上,这个力就是惯性力;后者我们说不存在惯性力,只说存在惯性,因为在惯性坐标系中,我们研究的是物体,而非坐标系(即假定坐标系相对地球静止),当我们把坐标系也考虑在内时,当坐标系运动,就产生了惯性力f,这种力作用会假想作用在物体上,只是与运动方向相反。

125、 由上可知,加速度计的本质是测量力而非加速度。

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

127、 STM32的闪存模块由:主存储器、信息块和闪存存储器接口寄存器3个部分构成。主存储器用来存放代码和const常量;信息块由两个部分组成:启动程序代码、用户选择字节。其中启动程序代码为ST公司自带的启动程序,用于串口下载。最后的闪存存储器接口寄存器用于控制整个对闪存区域的操作。

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

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

130、 STM32的F ** C有HADDR[27:0],其中[27:26]用来选择BANK区域的4个不同块。剩下的[25:0]则用来连接外部存储区域的地址线F ** C_A[25:0]。如果数据宽度是8bit,此时的HADDR[25:0]和F ** C_A[25:0]是完全对应的。如果数据宽度是16bit,此时的HADDR[25:1]和F ** C_A[24:0]是对应起来的。需要注意:无论数据宽度是多少,外部的F ** C_A[0]和A[0]总是对应的。

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

132、 __attribute__ (函数属性、变量属性、类型属性等)。如果在使用SRAM时,可以采用u32 sram_array[xx] __attribute__ ((at(0x))代表将外部SRAM的空间全部给了sram_array这个变量,他具有在at0x这个地址的属性。往里面写值就直接在SRAM里面写值。

133、

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

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

134、SD卡的分类:

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

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

136、 要显示汉字,采用的方式如果用点阵的形式是不可取的,因为这无法查找汉字。采用的方式就是内码系统。GBK标准中,一个汉字对应2个字节:前者称为区(0x81~0xFE)后者为(0x40~0x7E)和(0x80~0xFE)。前者有126个区,后者有190,那么可以显示的汉字数量有126*190=23940个。根据这两个值用来查找字库,字库中存放的还是每个汉字的点阵数据。这个字库非常大,如果是16*16的字体,那么一个字体就需要32个字节,如此说来需要23940*32=748K的空间,可见非常大,所以需要外部的Flash来存储这个字库。

137、 由于汉字内码系统不具有国际通用性,但是Unicode几乎把所有的语言都放置进来,这样在单片机中操作汉字时,就需要将GBK和Unicode转化。尤其是在FATFS中,创建中文文件名和读取中文文件信息时需要将Unicode换转为GBK后再进行修改操作,再反转换成Unicode保存修改。这么说,两者的存在是由于标准的不统一,并且Unicode中只有60 ** 个汉字,而GBK显然是一种汉字扩展。

138、 BMP图片编码的顺序是从左到右,从下到上。

139、 VS1053是一款高性能的数字音频解码芯片,从SD卡中将mp3等音乐音频文件通过SPI送给VS1053后,由其进行音频解码,输出音乐给耳机。耳机驱动可以采用TDA1308芯片,这款芯片为AB类耳机驱动芯片。

140、

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

在普通编程中,flash中的code是通过JTAG和ISP等工具下载到单片机中。而在IAP编程中,flash被分区为A和B两个区域,A区域只允许用USB/USART等方式下载,此区域作为更新B区域的代码用。B区域则是用户的code区域,真正的代码在这里被执行,放置的就是app。

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

上图表示加入IAP后的STM32程序运行流程图。可以看到上电复位后跳到IAP程序的 ** in函数处运行IAP过程(这个过程就是把下面灰底色块的程序代码烧进B区域à代码更新)。后面的过程和STM32正常运行一样,如果出现中断请求,还是跳转到A区域中的中断向量表中,然后再跳转到B区域的中断服务入口。

142、 USB有四根线,VCC、GND、D+、D-。在USB主机上,D+和D-均通过一个15K的电阻接地,这样两条线均为低电平。在USB设备中,对于高速设备会在D+通过一个1.5K的电阻接到VCC,而低俗设备会在D-通过一个1.5K的电阻接到VCC。这样主机就可以通过D+和D-的高电平的到来来检测是否有设备接入,并且识别高低速设备。

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

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

相关标签: