版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM微控制器与嵌入式系统
定时器输出PWM编程实验内容定时器输出PWM编程任务定时器输出PWM编程要点编程实验定时器输出PWM编程任务任务要求:使用定时器TIM3的四个通道输出PWM信号四个通道的PWM信号频率都是500Hz占空比分别为20%,40%,60%,80%,使用示波器显示出来。其中第一个通道的占空比可以循环变化,当接led灯时能够从灯的亮灭观察出占空比的变化。定时器生成PWM的编程要点1、开启GPIO时钟、定时器时钟2、PWM输出端口配置3、复用引脚功能映射4、定时器配置5、输出通道配置6、PWM使能7、设置比较器值输出PWMPWM输出端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空模式GPIO_Init(GPIOB,&GPIO_InitStructure); 定时器配置TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=84-1;//预分频系数TIM_TimeBaseStructure.TIM_Period=2000-1;//定时器初值TIM_TimeBaseStructureTIM_CounterMode=TIM_CounterMode_Up;//计数模式TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//分频因子TIM_RepetitionCounter=0; //重复计数TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);输出通道配置、输出使能TIM_OCInitTypeDefTIM_OCInitStructure;TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//配置为PWM模式1TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//输出通道使能 TIM_OCInitStruct.TIM_Pulse=1000-1;//配置占空比为1000/2000=50%TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//计数小于CCR1为高电平TIM_OC1Init(TIM3,&TIM_OCInitStruct); //使能通道1TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能通道1重载TIM_Cmd(TIM3,ENABLE);
定时器输出PWM编程实验小结定时器输出PWM编程任务定时器输出PWM编程要点编程实验ARM微控制器与嵌入式系统
定时器输出PWM编程实例主讲人:景妮琴北京电子科技职业学院PWM应用数模转换电机控制音调产生灯的亮度控制使用PWM进行数模转换使用PWM驱动扬声器使用PWM调节灯的亮度使用PWM控制电机内容定时器输出PWM编程实例通过PWM产生音调通过PWM产生一首乐曲定时器生成PWM的编程要点1、开启GPIO时钟、定时器时钟2、PWM输出端口配置3、复用引脚功能映射4、定时器配置5、输出通道配置6、PWM使能7、设置比较器值输出PWMPWM输出端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空模式GPIO_Init(GPIOB,&GPIO_InitStructure); 定时器配置TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=84-1;//预分频系数TIM_TimeBaseStructure.TIM_Period=2000-1;//定时器初值TIM_TimeBaseStructureTIM_CounterMode=TIM_CounterMode_Up;//计数模式TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//分频因子TIM_RepetitionCounter=0; //重复计数TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);输出通道配置、输出使能TIM_OCInitTypeDefTIM_OCInitStructure;TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//配置为PWM模式1TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//输出通道使能 TIM_OCInitStruct.TIM_Pulse=1000-1;//配置占空比为1000/2000=50%TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//计数小于CCR1为高电平TIM_OC1Init(TIM3,&TIM_OCInitStruct); //使能通道1TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能通道1重载TIM_Cmd(TIM3,ENABLE);
定时器输出PWM编程实例通过PWM产生音调定时器输出PWM编程实例通过PWM产生一首乐曲小结定时器输出PWM编程实例通过PWM产生音调通过PWM产生一首乐曲ARM微控制器与嵌入式系统
I2C协议主讲人:景妮琴北京电子科技职业学院内容I2C串行总线概述I2C协议—物理层I2C协议—协议层I2C总线数据传送的模拟I2C串行总线概述采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。常用的串行扩展总线有:I2C(InterICBUS)总线、单总线(1-WIREBUS)、SPI(SerialPeripheralInterface)总线及Microwire/PLUS等。I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C串行总线概述I2C串行总线概述I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。I2C串行总线概述I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。I2C串行总线概述每个接到I2C总线上的器件都有唯一的地址。主机与器件间的数据传送可以是由主机发送数据到器件,这时主机即为发送器。总线上接收数据的器件则为接收器。
在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。在单片机应用系统的串行总线扩展中,我们经常遇到的是以单片机为主机,其它接口器件为从机的单主机情况。I2C协议—物理层I2C协议简介I2C通讯协议(Inter-IntegratedCircuit)是由Philips公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C协议—物理层它是一个支持多设备的总线。“总线”指多个设备共用的信号线。一个I2C总线只使用两条总线线路,串行数据线:SDA,用来表示数据串行时钟线
:SCL,用于数据收发同步I2C协议—物理层每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。总线通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。7位地址最多连接128个设备10位地址最多连接1024个设备I2C协议—物理层具有三种传输模式:标准模式传输速率为100kbit/s快速模式为400kbit/s高速模式下可达3.4Mbit/s,但目前大多I2C设备尚不支持高速模式。连接到相同总线的IC数量受到总线的最大电容400pF限制
。I2C协议—协议层I2C的协议定义了:通讯的起始和停止信号数据有效性响应仲裁时钟同步地址广播I2C协议—协议层起始和停止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示停止信号。起始和停止信号一般由主机产生。I2C协议—协议层数据位的有效性规定:I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。I2C协议—协议层地址及数据方向:I2C总线上的每个设备都有自己的独立地址,主机发起通讯时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机。设备地址可以是7位或10位。紧跟设备地址的一个数据位R/W用来表示数据传输方向,数据方向位为“1”时表示主机由从机读数据,该位为“0”时表示主机向从机写数据。I2C协议—协议层响应:I2C的数据和地址传输都带响应。响应包括“应答(ACK)”和“非应答(NACK)”两种信号。传输时主机产生时钟,在第9个时钟时,数据发送端会释放SDA的控制权,由数据接收端控制SDA,若SDA为高电平,表示非应答信号(NACK),低电平表示应答信号(ACK)。I2C协议—协议层数据传输的数据帧格式:
I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(可以是7位),接下来(第8位)是数据的传送方向位,用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。数据传输分为:主机写数据到从机主机由从机中读数据写数据与读数据的复合格式I2C协议—协议层主机写数据到从机:主机向从机发送数据,数据传送方向在整个传送过程中不变。起始信号——从机地址——读写信号—应答位—数据位——应答位——……——停止位I2C协议—协议层主机由从机中读数据:主机在第一个字节后,立即从从机读数据。起始信号——从机地址——读写信号—应答位—数据位——应答位——……——停止位阴影部分:数据由主机传输至从机无阴影部分:数据由从机传输至主机A表示应答,A非表示非应答(高电平)。S表示起始信号,P表示终止信号。R/W表示传输方向选择位,1为读,0为写。I2C协议—协议层写数据与读数据的复合格式:在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。。I2C总线数据传送的模拟主机若是采用不带I2C总线接口的单片机,如80C51、AT89C2051等单片机,就需要利用软件实现I2C总线的数据传送,即软件与硬件结合的信号模拟。为了保证数据传送的可靠性,标准的I2C总线的数据传送有严格的时序要求。I2C总线数据传送的模拟I2C总线的起始信号、终止信号、发送“0”及发送“1”的模拟时序为:I2C总线数据传送的模拟起始信号的模拟voidI2CStart(void){ SDA=1; SomeNop(); SCL=1; SomeNop(); SDA=0; SomeNop();}终止信号的模拟voidI2cStop(void){SDA=0;SomeNop();SCL=1;SomeNop();SDA=1;SomeNop();}小结IIC概述IIC协议—物理层IIC协议—协议层I2C总线数据传送的模拟ARM微控制器与嵌入式系统
STM32-I2C主讲人:景妮琴北京电子科技职业学院内容STM32的I2C特性及架构STM32的I2C框图STM32的I2C通信STM32的I2C特性I2C(内部集成电路)总线接口用作微控制器和I2C串行总线之间的接口。它提供多主模式功能,可以控制所有I2C总线特定的序列、协议、仲裁和时序。它支持标准和快速模式。它还与SMBus2.0兼容。STM32的I2C特性并行总线/I2C协议转换器多主模式功能:同一接口既可用作主模式也可用作从模式I2C主模式特性:时钟生成起始位和停止位生成I2C从模式特性:可编程I2C地址检测双寻址模式,可对2个从地址应答停止位检测STM32的I2C特性7位/10位寻址以及广播呼叫的生成和检测支持不同的通信速度:标准速度(高达100kHz)快速速度(高达400kHz)状态标志:发送/接收模式标志字节传输结束标志I2C忙碌标志STM32的I2C特性错误标志:主模式下的仲裁丢失情况地址/数据传输完成后的应答失败检测误放的起始位和停止位禁止时钟延长后出现的上溢/下溢2个中断向量:一个中断由成功的地址/数据字节传输事件触发一个中断由错误状态触发STM32的I2C特性及架构软件模拟协议:使用CPU直接控制通信引脚的电平,产生出符合通信协议标准的逻辑。硬件实现协议:由STM32的I2C片上外设专门负责实现I2C通信协议,只要配置好该外设,它就会自动根据协议要求产生通信信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理I2C协议的方式减轻了CPU的工作,且使软件设计更加简单。STM32的I2C框图通信引脚时钟控制逻辑数据控制逻辑整体控制逻辑STM32的I2C框图1.通信引脚STM32芯片有多个I2C外设,它们的I2C通信信号引出到不同的GPIO引脚上,使用时必须配置到这些指定的引脚。引脚I2C编号I2C1I2C2I2C3SCLPB6/PB8PF1/PB10/PH4PA8/PH7SDAPB7/PB9PF0/PB11/PH5PC9/PH8STM32的I2C框图2.时钟控制逻辑SCL线的时钟信号,由I2C接口根据时钟控制寄存器(CCR)控制,控制的参数主要为时钟频率。可选择I2C通信的“标准/快速”模式,这两个模式分别I2C对应100K/400Kbit/s的通信速率。在快速模式下可选择SCL时钟的占空比,可选Tlow/Thigh=2或Tlow/Thigh=16/9模式。CCR寄存器中12位的配置因子CCR,它与I2C外设的输入时钟源共同作用,产生SCL时钟。STM32的I2C外设输入时钟源为PCLK1。STM32的I2C框图2.时钟控制逻辑计算时钟频率:标准模式: Thigh=CCR*TPCKL1Tlow
=CCR*TPCLK1快速模式中Tlow/Thigh=2时: Thigh=CCR*TPCKL1Tlow
=2*CCR*TPCKL1快速模式中Tlow/Thigh=16/9时: Thigh=9*CCR*TPCKL1
Tlow=16*CCR*TPCKL1STM32的I2C框图2.时钟控制逻辑计算时钟频率:例如,我们的PCLK1=42MHz,想要配置400Kbit/s的速率,计算方式如下: PCLK时钟周期: TPCLK1=1/42000000
目标SCL时钟周期: TSCL=1/400000 SCL时钟周期内的高电平时间: THIGH=TSCL/3 SCL时钟周期内的低电平时间: TLOW=2*TSCL/3
计算CCR的值: CCR=THIGH/TPCLK1=35
该结果刚好为整数,所以我们可直接把CCR取值为35,这样I2C的SCL实际频率即为400KHz。STM32的I2C框图3.数据控制逻辑I2C的SDA信号主要连接到数据移位寄存器上,数据移位寄存器的数据来源及目标是数据寄存器(DR)、地址寄存器(OAR)、PEC寄存器以及SDA数据线。当向外发送数据的时候,数据移位寄存器以“数据寄存器”为数据源,把数据一位一位地通过SDA信号线发送出去;当从外部接收数据的时候,数据移位寄存器把SDA信号线采样到的数据一位一位地存储到“数据寄存器”中。STM32的I2C框图4.整体控制逻辑整体控制逻辑负责协调整个I2C外设,控制逻辑的工作模式根据我们配置的“控制寄存器(CR1/CR2)”的参数而改变。在外设工作时,控制逻辑会根据外设的工作状态修改“状态寄存器(SR1和SR2)”,只要读取这些寄存器相关的寄存器位,就可以了解I2C的工作状态。STM32的I2C通信使用I2C外设通信时,在通信的不同阶段它会对“状态寄存器(SR1及SR2)”的不同数据位写入参数,通过读取这些寄存器标志来了解通信状态。STM32的I2C通信分为:主发送器的通信过程主接收器的通信过程STM32的I2C通信1.主发送器的通信过程控制产生起始信号(S),当发生起始信号后,它产生事件‘,并会对SR1寄存器的“SB”位置1,表示起始信号已经发送;发送设备地址并等待应答信号,若有从机应答,则产生事件“EV6”及“EV8”,这时SR1寄存器的“ADDR”位及“TXE”位被置1,ADDR为1表示地址已经发送,TXE为1表示发送数据寄存器为空;STM32的I2C通信1.主发送器的通信过程往I2C的“数据寄存器DR”写入要发送的数据,这时TXE位会被重置0,表示数据寄存器非空,I2C外设通过SDA信号线一位位把数据发送出去后,又会产生“EV8”事件,即TXE位被置1,重复这个过程,可以发送多个字节数据;发送数据完成后,控制I2C设备产生一个停止信号(P),这个时候会产生EV8_2事件,SR1的TXE位及BTF位都被置1,表示通信结束。STM32的I2C通信2.主接收器的通信过程起始信号(S)是由主机端产生的,控制发生起始信号后,它产生事件“EV5”,并会对SR1寄存器的“SB”位置1,表示起始信号已经发送;发送设备地址并等待应答信号,若有从机应答,则产生事件“EV6”这时SR1寄存器的“ADDR”位被置1,表示地址已经发送。STM32的I2C通信2.主接收器的通信过程从机端接收到地址后,开始向主机端发送数据。当主机接收到这些数据后,会产生“EV7”事件,SR1寄存器的RXNE被置1,表示接收数据寄存器非空,读取该寄存器后,可对数据寄存器清空,以便接收下一次数据。此时可以控制I2C发送应答信号(ACK)或非应答信号(NACK),若应答,则重复以上步骤接收数据,若非应答,则停止传输;发送非应答信号后,产生停止信号(P),结束传输。小结STM32的I2C特性及架构STM32的I2C框图STM32的I2C通信ARM微控制器与嵌入式系统
BH1750光照度传感器主讲人:景妮琴北京电子科技职业学院BH1750概述1BH1750FVI是一款数字型光强度传感器集成芯片。BH1750FVI是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。(1lx-65535lx,照度:单位被照面积上接收到的光通量,用E表示,单位是勒克斯(lx)1.支持I2CBUS接口(f/sModeSupport)。(使用过)2.接近视觉灵敏度的光谱灵敏度特性(峰值灵敏度波长典型值:560nm)。3.输出对应亮度的数字值,
对应广泛的输入光范围(相当于1-65535lx)。4.支持1.8V逻辑输入接口。5.光源依赖性弱(白炽灯,荧光灯,卤素灯,白光LED,日光灯)。6.有两种可选的I2Cslave地址。7.可调的测量结果,影响较大的因素为光入口大小。8.使用这种功能能计算1.1lx到100000lx/分钟的范围。9.最小误差变动在±20%。10.受红外线影响很小。BH1750概述1BH1750的内部由光敏二极管、运算放大器、ADC采集、晶振等组成。・PD,接近人眼反应的光敏二极管。(Photodiodewithapproximatelyhumaneyeresponse.)・AMP,集成运算放大器:将PD电流转换为PD电压。・ADC,模数转换获取16位数字数据。・Logic+ICInterface(逻辑+IC界面),光强度计算和I2C总线接口,包括下列寄存器:数据寄存器→光强度数据寄存。初始值是:“0000_0000_0000_0000”。测量时间寄存器→时间测量数据寄存。初始值是:“0100_0101”。・OSC,内部振荡器(时钟频率典型值:320kHz)。该时钟为内部逻辑。BH1750概述1引脚说明BH1750概述1引脚说明BH1750概述1BH1750的内部由光敏二极管、运算放大器、ADC采集、晶振等组成。引脚号名称说明1VCC供电电压源正极(3.3V)2SCLIIC时钟线,时钟输入引脚,由MCU输出时钟3SDAIIC数据线,双向IO口,用来传输数据4ADDRIIC地址线,接GND时器件地址为0100011,接VCC时器件地址为10111005GND供电电压源负极BH1750概述1BH1750FVI电气参数。BH1750概述1BH1750FVI电气参数。BH1750概述1BH1750BH1750概述1指令集合结构指令功能代码注释断电0000_0000无激活状态。通电0000_0001等待测量指令。重置0000_0111重置数字寄存器值,重置指令在断电模式下不起作用。连续H分辨率模式0001_0000在1lx分辨率下开始测量。测量时间一般为120ms。连续H分辨率模式20001_0001在0.5lx分辨率下开始测量。测量时间一般为120ms。连续L分辨率模式0001_0011在41lx分辨率下开始测量。测量时间一般为16ms。一次H分辨率模式0010_0000在1lx分辨率下开始测量。测量时间一般为120ms。测量后自动设置为断电模式。一次H分辨率模式20010_0001在0.5lx分辨率下开始测量。测量时间一般为120ms。测量后自动设置为断电模式。一次L分辨率模式0010_0011在41lx分辨率下开始测量。测量时间一般为16ms。测量后自动设置为断电模式。改变测量时间(高位)01000_MT[7,6,5]改变测量时间※请参考“根据光学扇窗的影响调整测量结果。”改变测量时间(低位)011_MT[4,3,2,1,0]改变测量时间※请参考“根据光学扇窗的影响调整测量结果。”BH1750概述1测量模式说明测量模式测量时间.分辨率H-分辨率模式2典型时间:120ms0.5lxH-分辨率模式典型时间:120ms.1lx.L-分辨率模式典型时间:16ms.4lx建议使用H分辨率模式。H分辨率模式下足够长的测量时间(积)能抑制一些噪声包括(50Hz/60Hz)。同时,H分辨率模式的分辨率在1lx下,适用于黑暗场合(少10lx)。H分辨率模式2同样适用于黑暗场合下的检测。BH1750概述1从“写指示”到“读出测量结果”的测量时序实例实例:(ADDR='L')BH1750概述1I2C通信时序BH1750概述1I2C通信时序BH1750概述1I2C通信时序2一根是数据线SDA一根是时钟线SCLI2C总线只有两根双向信号线。I2C协议—物理层2I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。I2C协议—物理层2I2C协议—物理层连接到相同总线的IC数量受到总线的最大电容400pF限制。标准模式传输速率为100kbit/s快速模式为400kbit/s具有三种传输模式:高速模式下可达3.4Mbit/s,但目前大多I2C设备尚不支持高速模式。2I2C协议—协议层通信的起始和停止信号数据有效性响应仲裁时钟同步地址广播I2C的协议规定了:2I2C协议—协议层起始和停止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示停止信号。起始和停止信号一般由主机产生。2I2C协议—协议层I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。数据的有效性:2I2C协议—协议层地址及数据方向:I2C总线上的每个设备都有自己的独立地址,主机发起通信时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机。设备地址可以是7位或10位。1紧跟设备地址的一个数据位R/W用来表示数据传输方向,数据方向位为“1”时表示主机由从机读数据,该位为“0”时表示主机向从机写数据。22I2C协议—协议层响应I2C的数据和地址传输都带响应。响应包括“应答(ACK)”和“非应答(NACK)”两种信号。01传输时主机产生时钟,在第9个时钟时,数据发送端会释放SDA的控制权,由数据接收端控制SDA,若SDA为高电平,表示非应答信号(NACK),低电平表示应答信号(ACK)。022I2C协议—协议层地址及数据方向:
I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。01在起始信号后必须传送一个从机的地址(可以是7位),接下来(第8位)是数据的传送方向位,用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。02每次数据传送总是由主机产生的终止信号结束。03若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。04数据传输分为:主机写数据到从机主机由从机中读数据写数据与读数据的复合格式2I2C协议—协议层主机写数据到从机:主机向从机发送数据,数据传送方向在整个传送过程中不变。起始信号——从机地址——读写信号—应答位—数据位——应答位——……——停止位2I2C协议—协议层主机由从机中读数据:主机在第一个字节后,立即从从机读数据。起始信号——从机地址——读写信号—应答位—数据位——应答位——……——停止位2I2C协议—协议层在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。写数据与读数据的复合格式:引脚I2C编号I2C1I2C2I2C3SCLPB6/PB8PF1/PB10/PH4PA8/PH7SDAPB7/PB9PF0/PB11/PH5PC9/PH8引脚定义VCC:3.3VGND:接地SCL:串行时钟SDA:串行数据PB6PB7ADDR:从属地址,接地3编程要点:硬件连接主机写数据到从机010203根据I2C器件完成主设备发送数据到从设备,并接收从设备数据。04开启时钟外设(GPIO,I2C);初始化对应的GPIO引脚,在这里要注意的是一般I2c都配置成开漏输出就可以了;配置I2C结构体参数,初始化I2C,使能I2C。使能或者失能指定I2C的应答功能;3编程要点:软件设计主机由从机读数据编程要点:软件设计3打开GPIO时钟配置GPIO的结构体注意:Mode为AF,OType为OD配置复用GPIO为I2C1GPIO初始化打开I2C2的时钟配置I2C的结构体,初始化结构体使能I2CI2C初始化写数据BH1750的函数读数据编程要点:软件设计3打开GPIO时钟GPIO初始化RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOB,&GPIO_InitStructure);配置复用GPIO为I2C1配置GPIO的结构体
注意:Mode为AF,OType为ODGPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_I2C1);GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_I2C1);编程要点:软件设计3打开I2C1的时钟I2C初始化使能I2C1配置I2C的结构体,初始化结构体RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);I2C_InitTypeDefI2C_InitStruct;//定义结构体I2C_InitStruct.I2C_ClockSpeed=400000;//I2C的速率位400kHzI2C_InitStruct.I2C_Mode=I2C_Mode_I2C;//模式为I2CI2C_InitStruct.I2C_DutyCycle=I2C_DutyCycle_2;//占空比为2:1I2C_InitStruct.I2C_OwnAddress1=0x00;//主机自己的地址,这个可以随意设置,因为只有一个主机I2C_InitStruct.I2C_Ack=I2C_Ack_Enable;//使能ACKI2C_InitStruct.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit;//地址为7为I2C_Init(I2C1,&I2C_InitStruct);//初始化结构体I2CI2C_Cmd(I2C1,ENABLE);//使能I2C1使能I2C的应答功能I2C_AcknowledgeConfig(I2C1,ENABLE);//使能I2C1的ACK编程要点:软件设计3写数据BH1750的函数读数据编程要点:软件设计-STM32的I2C通信3主发送器的通信过程主接收器的通信过程STM32的I2C通信分为:使用I2C外设通信时,在通信的不同阶段它会对“状态寄存器(SR1及SR2)”的不同数据位写入参数,通过读取这些寄存器标志来了解通信状态。3主发送器的通信过程控制产生起始信号(S)当发生起始信号后,它产生事件“EV5”并会对SR1寄存器的“SB”位置1,表示起始信号已经发送;01编程要点:软件设计-STM32的I2C通信3主发送器的通信过程发送设备地址并等待应答信号若有从机应答,则产生事件“EV6”及“EV8”这时SR1寄存器的“ADDR”位及“TXE”位被置1,ADDR为1表示地址已经发送,TXE为1表示发送数据寄存器为空;02编程要点:软件设计-STM32的I2C通信3主发送器的通信过程03往I2C的“数据寄存器DR”写入要发送的数据这时TXE位会被重置0,表示数据寄存器非空,I2C外设通过SDA信号线一位位把数据发送出去后又会产生“EV8”事件,即TXE位被置1,重复这个过程,可以发送多个字节数据;编程要点:软件设计-STM32的I2C通信3主发送器的通信过程04发送数据完成后,控制I2C设备产生一个停止信号(P),这个时候会产生EV8_2事件,SR1的TXE位及BTF位都被置1,表示通信结束。编程要点:软件设计-STM32的I2C通信编程要点:软件设计3写数据BH1750的函数模仿OLED的写数据函数编程要点:软件设计3写数据BH1750的函数3主接收器的通信过程起始信号(S)是由主机端产生的,控制发生起始信号后,它产生事件“EV5”,并会对SR1寄存器的“SB”位置1,表示起始信号已经发送;01编程要点:软件设计-STM32的I2C通信3主接收器的通信过程发送设备地址并等待应答信号,若有从机应答,则产生事件“EV6”这时SR1寄存器的“ADDR”位被置1,表示地址已经发送。02编程要点:软件设计-STM32的I2C通信3主接收器的通信过程从机端接收到地址后,开始向主机端发送数据。当主机接收到这些数据后,会产生“EV7”事件SR1寄存器的RXNE被置1,表示接收数据寄存器非空,读取该寄存器后,可对数据寄存器清空,以便接收下一次数据。此时可以控制I2C发送应答信号(ACK)或非应答信号(NACK)03编程要点:软件设计-STM32的I2C通信3主接收器的通信过程若应答,则重复以上步骤接收数据,若非应答,则停止传输;发送非应答信号后,产生停止信号(P),结束传输。04编程要点:软件设计-STM32的I2C通信编程要点:软件设计3读数据BH1750的函数(1)判忙(2)发送起始信号(3)等待EV5事件发生(4)发送读地址(5)等待EV6事件发生(6)等待EV7事件发生(ACK)(7)读取一个字节(8)等待EV7事件发生(ACK)(9)再读取一个字节(10)等待EV7_2事件发生(NACK)(11)发送停止信号while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY)!=RESET);I2C_GenerateSTART(I2C1,ENABLE);while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));I2C_Send7bitAddress(I2C1,0x47,I2C_Direction_Receiver);while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));BUF[0]=I2C_ReceiveData(I2C1);while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));BUF[1]=I2C_ReceiveData(I2C1);while(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED));I2C_GenerateSTOP(I2C1,ENABLE);编程要点:软件设计3处理数据BH1750的函数BH1750编程实验BH1750.c:配置函数/*ADDR接GND,即ADDR接‘L’,则地址为‘0100011’;若ADDR接‘H’,则地址为1011100*/BH1750编程实验BH1750.c:配置函数BH1750编程实验BH1750.c:写数据函数BH1750编程实验BH1750.c:读数据函数BH1750编程实验BH1750.c:获取光照度/**一次完整的数据传输为16位,高位先出,
数据/1.2就是光照度的值*//**显示函数*/BH1750编程实验BH1750.h:库函数BH1750编程实验main.c:主函数主讲教师:景妮琴本节结束!ARM微控制器与嵌入式系统
ADC采集主讲人:景妮琴北京电子科技职业学院内容ADC概述如何实现AD转换ADC转换原理ADC的基本概念STM32的ADCADC框图ADC概述微控制器数字信号实际生活中模拟信号ADC:AnalogtoDigitalConverter模拟量到数字量的转换器DAC:DigitaltoAnalogConverter数字量到模拟量的转换器微控制器:自动控制如何实现AD转换?1位数据的输出Uin>UrefUout:1Uin<UrefUout:0这个图重新帮我做一个如何实现AD转换?2位数据的输出Uin<Uref1,Uout1:0,Uout2:0,Uout3:0Uin>Uref1,Uin<Uref2,Uout1:1,Uout2:0,Uout3:0Uin>Uref2,Uin<Uref3Uout1:1,Uout2:1,Uout3:0Uin>Uref3Uout1:1,Uout2:1,Uout3:1这两个图重新帮我做一个如何实现AD转换?2位数据的输出除了比较器还需要编码电路,把生成的编码对应二位的数字信号10位ADC:1023个比较器,2^10-1最快的ADC这个图重新帮我做一个逐次逼近式ADC的转换原理1000000011000000这个图重新帮我做一个ADC的基本概念分辨率ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/4096。一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/4096=2.4mV。ADC的基本概念输出电压范围超过ADC的范围怎么办?搭建模拟电路ADC可以测量:-10V~10V根据基尔霍夫定律(KCL),节点流入的电流等于流出的电流(Vint–Vout)/R2+(3V3-Vout)/R1=Vout/R3Vout=(Vint+10)/6这个图重新帮我做一个ADC的基本概念基准参考电压:VREF输入电压:VREF-≤VIN≤VREF+决定输入电压的引脚:VREF-、VREF+、VDDA、VSSAVSSA和VREF-接地,把VREF+和VDDA接3V3,得到ADC的输入电压范围为:0~3.3V。STM32的ADCADC:12位逐次趋近型模数转换器。三个独立的ADC1/2/3可配置12位、10位、8位或6位分辨率每个ADC具有18个通道,其中外部通道16个在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断可独立配置各通道采样时间不连续采样模式1-电压输入范围2-输入通道3-转换顺序4-触发源5-转换时间7-中断8-电压转换ADC功能框图6-数据寄存器ADC功能框图1-电压输入范围ADC功能框图2-输入通道每个ADC具有18个通道,其中外部通道16个。ADC功能框图3-转换顺序规则通道组:相当于正常运行的程序,最多16个通道。注入通道组:相当于中断,最多4个通道。规则通道和注入通道的关系示意图:规则通道1规则通道2规则通道N注入通道1注入通道1规则通道1规则通道2规则通道N注入通道NADC功能框图4-触发源ADC功能框图5-转换时间--转换模式单次转换模式:在单次转换模式下,ADC执行一次转换。连续转换模式:在连续转换模式下,ADC结束一个转换后立即启动一个新的转换。扫描模式:此模式用于扫描一组模拟通道。每次转换结束后,会自动转换该组中的下一个通道。ADC功能框图5-转换时间ADC_CLKMax:36MHzADC功能框图5-转换时间ADC_CLK=APB2_CLK/ADC_PrescalerADC_CLKMax:36MHzAPB2_CLKMax:84MHz
ADC_PrescalerMin:4ADC_CLKMax=21MHzADC功能框图5-转换时间转换时间:Tconv=采样时间+12个周期(12位)采样时间:ADC需要若干个ADC_CLK周期完成对输入的模拟量进行采样,每个通道可以分别用不同的时间采样。其中采样周期最小是3个,即如果我们要达到最快的采样,那么应该设置采样周期为3个周期,这里说的周期就是1/ADC_CLK。Tconv=3+12=15周期=15/21us=0.71usADC功能框图5-转换时间采样率,决定了ADC能采集多大频率的信号ADC功能框图6-数据寄存器ADC转换后的数据根据转换组的不同,规则组的数据放在ADC_DR
寄存器,注入组的数据放在JDRx。如果是使用双重或者三重模式那规矩组的数据是存放在通用规则寄存器ADC_CDR
内的ADC功能框图7-中断ADC功能框图8-电压转换:怎么根据数据量算出模拟量电压输入范围为:0~3.3V分辨率为12位最小精度为:3.3/2^12设数字量为X,则有模拟量
Y=(3.3/2^12)*X小结ADC概述如何实现AD转换ADC转换原理ADC的基本概念STM32的ADCADC框图ARM微控制器与嵌入式系统
STM32-ADC编程要点主讲人:景妮琴北京电子科技职业学院内容ADC硬件设计STM32-ADC编程要点ADC结构体ADC库函数ADC中断主函数计算电压值ADC硬件设计使用一个滑动变阻器,将中间端子接到ADC通道的GPIO(从表中任选)通道号ADC1ADC2ADC3通道0PA0PA0PA0通道1PA1PA1PA1通道2PA2PA2PA2通道3PA3PA3PA3通道4PA4PA4PF6通道5PA5PA5PF7通道6PA6PA6PF8通道7PA7PA7PF9通道8PB0PB0PF10通道9PB1PB1PF3通道10PC0PC0PC0通道11PC1PC1PC1通道12PC2PC2PC2通道13PC13PC13PC13通道14PC4PC4PF4通道15PC5PC5PF5编程要点独立模式-单通道-中断(不使用DMA)1-打开GPIO时钟,ADC时钟2-ADC通道端口配置3-配置ADC4-配置通道的转换顺序、配置中断、打开ADC、触发ADC开始转换5-编写main函数,中断服务函数,获取ADC转换结果编程要点:独立模式-单通道-中断(不使用DMA)1、开启GPIO时钟、ADC时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);编程要点:独立模式-单通道-中断(不使用DMA)2、ADC通道端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;//模拟模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空输入GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化配置ADC_InitTypeDef初始化结构体ADC_Resolution:配置ADC的分辨率,可选的分辨率有12位、10位、8位和6位。ADC_Resolution_12b,ADC_Resolution_10b,ADC_Resolution_8b,ADC_Resolution_6bADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;//ADC分辨率ADC_InitTypeDef初始化结构体ScanConvMode:配置是否使用扫描。可选参数为ENABLE和DISABLE。如果是单通道AD转换使用DISABLE,如果是多通道AD转换使用ENABLE。ADC_InitStructure.ADC_ScanConvMode=DISABLE;//单通道不扫描ADC_InitTypeDef初始化结构体ADC_ContinuousConvMode:配置是启动自动连续转换还是单次转换可选参数为ENABLE和DISABLE使用ENABLE配置为使能自动连续转换;使用DISABLE配置为单次转换,转换一次后停止需要手动控制才重新启动转换。ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//连续转换ADC_InitTypeDef初始化结构体ADC_ExternalTrigConvEdge:外部触发极性选择如果使用外部触发,可以选择触发的极性,可选有禁止触发检测、上升沿触发检测、下降沿触发检测以及上升沿和下降沿均可触发检测。
ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;//禁止外部边沿触发ADC_InitTypeDef初始化结构体ADC_ExternalTrigConv:外部触发选择实际上,我们一般使用软件自动触发。ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_Ext_IT11;//使用软件触发,此值随便赋值即可ADC_InitTypeDef初始化结构体ADC_DataAlign:转换结果数据对齐模式可选右对齐ADC_DataAlign_Right,左对齐ADC_DataAlign_Left。一般我们选择右对齐模式。ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
//数据右对齐 ADC_InitTypeDef初始化结构体ADC_NbrOfChannel:AD转换通道数目。Thisparametermustrangefrom1to16.ADC_InitStructure.ADC_NbrOfConversion=1;//转换通道1个ADC_CommonInitTypeDef通用初始化结构体ADC_Mode:ADC工作模式选择,有独立模式、双重模式以及三重模式ADC_CommonInitStructure.ADC_Mode=ADC_Mode_Independent;//独立ADC模式ADC_CommonInitTypeDef通用初始化结构体ADC_Prescaler:ADC时钟分频系数选择ADC时钟是由PCLK2分频而来,分频系数决定ADC时钟频率,可选的分频系数为2、4、6和8。ADC最大时钟配置为36MHz。
ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div4;//时钟为fpclkx分频ADC_CommonInitTypeDef通用初始化结构体ADC_DMAAccessMode:DMA模式设置,只有在双重或者三重模式才需要设置,可以设置三种模式
ADC_CommonInitStructure.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled;//禁止DMA直接访问模式ADC_CommonInitTypeDef通用初始化结构体ADC_TwoSamplingDelay:2个采样阶段之前的延迟,仅适用于双重或三重交错模式。ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_20Cycles;//采样时间间隔 ADC库函数ConfiguresADC1Channel2as:firstconvertedchannelwithan7.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_2,1,ADC_SampleTime_7Cycles5);ADC库函数ConfiguresADC1Channel8as:secondconvertedchannelwithan1.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_8,2,ADC_SampleTime_1Cycles5);编程要点:独立模式-单通道-中断(不使用DMA)3、ADC配置编程要点:独立模式-单通道-中断(不使用DMA)4、配置通道的转换顺序、配置中断、打开ADC、触发ADC开始转换ADC中断主函数计算电压值5、编写main函数,中断服务函数,获取ADC转换结果获取ADC转换结果uint16_tADC_Get_Value(ADC_TypeDef*adcx,uint16_tchx,uint8_tRauk){ //为选定的ADC常规通道配置相应的*排序器和采样时间 ADC_RegularChannelConfig(adcx,chx,Rauk,ADC_SampleTime_480Cycles); //软件启动ADC ADC_SoftwareStartConv(adcx); while(!ADC_GetFlagStatus(adcx,ADC_FLAG_EOC)); ADC_ClearFlag(adcx,ADC_FLAG_EOC); returnADC_GetConversionValue(adcx);}小结ADC硬件设计STM32-ADC编程要点ADC结构体ADC库函数ADC中断主函数计算电压值ARM微控制器与嵌入式系统
STM32-ADC编程实验主讲人:景妮琴北京电子科技职业学院内容ADC硬件设计STM32-ADC编程要点ADC中断主函数计算电压值ADC硬件设计使用一个滑动变阻器,将中间端子接到ADC通道的GPIO(从表中任选)通道号ADC1ADC2ADC3通道0PA0PA0PA0通道1PA1PA1PA1通道2PA2PA2PA2通道3PA3PA3PA3通道4PA4PA4PF6通道5PA5PA5PF7通道6PA6PA6PF8通道7PA7PA7PF9通道8PB0PB0PF10通道9PB1PB1PF3通道10PC0PC0PC0通道11PC1PC1PC1通道12PC2PC2PC2通道13PC13PC13PC13通道14PC4PC4PF4通道15PC5PC5PF5编程要点独立模式-单通道-中断(不使用DMA)1-打开GPIO时钟,ADC时钟2-ADC通道端口配置3-配置ADC4-配置通道的转换顺序、配置中断、打开ADC、触发ADC开始转换5-编写main函数,中断服务函数,获取ADC转换结果编程要点:独立模式-单通道-中断(不使用DMA)1、开启GPIO时钟、ADC时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);编程要点:独立模式-单通道-中断(不使用DMA)2、ADC通道端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;//模拟模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空输入GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化配置编程要点:独立模式-单通道-中断(不使用DMA)3、ADC配置编程要点:独立模式-单通道-中断(不使用DMA)4、配置通道的转换顺序、配置中断、打开ADC、触发ADC开始转换ADC中断主函数计算电压值5、编写main函数,中断服务函数,获取ADC转换结果小结ADC硬件设计STM32-ADC编程要点ADC中断主函数计算电压值STM32嵌入式操作系统介绍主讲教师:吴友兰常见的操作系统1操作系统的基本结构2UserApplicattionOperatingSystemHardware是一种为应用程序提供服务的系统软件。操作系统从层次上看,操作系统位于计算机硬件之上,软件之下。嵌入式系统介绍3是嵌入式系统的三个基本要素“嵌入性”“专用性”“计算机系统”嵌入式系统概念以应用为中心以计算机技术为基础软硬件可裁剪适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统01020304广义定义:任何一个非计算机的计算系统嵌入式系统中常见的两种编程方式4前后台系统嵌入式操作系统前后台模式应用程序5前后台模式的特点应用程序通常是一个无限的循环,在循环中,通过调用相应的处理函数完成相应的操作,这部分可以看作为后台行为。中断服务程序接收异步中断,来通知后台,后台收到中断请求后进行处理。嵌入式实时操作系统的特点61与硬件相关的底层驱动软件2系统内核3设备驱动接口4通信协议5图形界面嵌入式操作系统是一种用途广泛的系统软件6……负责嵌入式系统的全部软、硬件资源的分配、任务调度、控制、协调并发活动。嵌入式实时操作系统的特点6FreeRTOS
uC/OS-II
RT-thread
WindowCEVxworks目前嵌入式领域广泛使用的操作系统有两种开发模式对比7两种开发模式选择8前后台模式嵌入式操作系统产品功能简单01开发成员不多02不需要复杂的外设(如USB/网络/FS等…)03成本要求非常苛刻04产品功能复杂01团队协作开发02需要使用复杂的外设和功能(如USB/网络/FS等…)03硬件成本允许增加OS的资源04两种开发模式选择8基于STM32平台且满足实时控制要求操作系统,有以下5种可供移植选择分别为:μClinuxμC/OSeCosFreeRTOSrt-thread0102030405μClinux操作系统901μClinux是一种优秀的嵌入式Linux版本μClinux结构复杂移植相对困难内核也较大实时也差一些若开发的嵌入式产品注重文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年开发区综合招商代理合作合同版
- 绘本故事托班课程设计
- 英语初中阅读课课程设计
- 税收筹划课程设计进度
- 主治医师资格(全科医学301)考试题库(全真题库)
- 美丽小蛮腰雕刻课程设计
- 职业课程设计中的问题
- 游戏美术课程设计
- 职工培训课程设计
- 汽车行业维修技能培训总结
- 宝宝大便观察及护理课件
- 学校最小应急单元应急预案
- 一年级第一学期口算题(20以内口算天天练-15份各100题精确排版)
- 公司月度安全生产综合检查表
- 重庆市康德卷2023-2024学年物理高二上期末综合测试试题含解析
- (银川市直部门之间交流)2022事业单位工作人员调动表
- 七年级音乐下册 第4单元《北京喜讯到边寨》课件1 花城版
- 飞行员献身国防志愿书1000字
- 瓷砖采购投标方案
- 世界国家地区区域划分 Excel对照表 简
- 移动互联网的实训报告优秀三篇
评论
0/150
提交评论