主要参考前人整理,想整理一遍巩固记忆
01:STLINK的连接问题
- 更新STLINK驱动。
- 设备管理器删除未识别的设备,然后拔了重插。
- 关闭电源选项中的“USB选择性暂停”,然后重新插。https://www.bilibili.com/read/cv18126898
- 换一个STLINK。
02:芯片内部结构
- cortex-M3:内核,其中需要注意需要注意ICode,DCode,system是直接从内核引出的。
- flash:勇于存储编写的程序。DCOde和system总线主要用于连接FLASH闪存
- SRAM:用于存储程序运行时的变量数据
- ICode:指令总线,用于加载程序指令
- DCode:数据总线,用于加载常亮和调试参数等
- system:是系统总线,连接flash以外的其他外设
- AHB系统总线:用于挂载最基本的(如复位和时钟控制RCC,SDIO)
- APB2,APB2:用于连接一般外设
- 桥接1,2:由于AHB和APB的总线协议,速度和数据传输上有差异,需要他们来完成转换和缓存
- DMA1,DMA2:同样拥有CPU的总线控制权,但却干简单的活,如搬运
03引脚定义及复用快捷查询
相关说明:
蓝色为最小系统板的相关引脚,绿的为IO口重定义引脚一口多用:可将其中之一映射到空闲端口进行某个外设初始化时,一定要注意先开启相应的RCC外设时钟,但是EXTI、内核外设(如NVIC)无需手动开启。
配置外设时钟时,可以参考上面的“STM32芯片系统结构”,以找到外设对应的位置。
stm32中每个中断通道都对应一个固定的中断函数的名称,这些名称从启动文件startup_stm32f10x_md.s里查看,最开始后缀是xxxxHandler的定义都是中断函数名。
保险起见,每次进入中断函数时,都应该先看一下当前中断的中断标志位是否为SET状态。中断函数结束前,也一定要记得清除该中断的中断标志位。
04:GPIO的库函数
GPIO的外设配置:
GPIO_PinLockConfig【使用不多】:用于锁定GPIO配置,防止配置被更改。
GPIO_PinRemapConfig【重要】:用于进行引脚重映射,不要随便动SWD调试端口。注意参数GPIO_Remap_SWJ_Disable慎用!!会将PA13、PA14、PA15、PB3、PB4这5个调试端口全变成普通的GPIO口,失去调试功能,就不能使用STLINK下载程序了。恢复的方法就是使用串口重新下载初始化程序。AFIO的外设配置:
GPIO_AFIODeInit:复位AFIO外设,调用该函数会清除AFIO外设的全部配置。
GPIO_EventOutputConfig【使用不多】:用于配置AFIO的事件输出功能。
GPIO_EventOutputCmd【使用不多】:用于配置AFIO的事件输出功能。
GPIO_EXTILineConfig【重要】:配置AFIO的数据选择寄存器,来选择想要的中断引脚。
05:EXTI的库函数
EXTI_DeInit:将EXTI的配置清除,恢复成上电默认的状态。
EXTI_Init【常用】:根据结构体的参数配置EXTI外设,常用于初始化EXTI。
EXTI_StructInit:把参数传递的结构体变量赋默认值。
注:上面这个三个函数,基本上所有的外设都有。
EXTI_GenerateSWInterrupt:用于软件触发外部中断,使得相应的中断线产生一次外部中断。只需要外部引脚触发外部中断,则不需要这个函数。
EXTI_GetFlagStatus:获取指定的标志位状态。用于主程序。
EXTI_ClearFlag:清除指定的标志位。用于主程序。
EXTI_GetITStatus:获取中断标志位。用于中断函数。
EXTI_ClearITPendingBit:清除中断挂起标志位。用于中断函数。
上面这四个函数都是对状态寄存器的读写,只不过后两个函数只能读写与中断有关的标志位,并对中断是否允许做出了判断;前两个函数只是一般的读写标志位,没有额外的处理,能不能触发中断的标志位都能读取。
06:NVIC库函数
NVIC_PriorityGroupConfig【重要】:用于中断分组,每个工程只允许出现一次。
NVIC_Init【重要】:根据结构体里面指定的参数初始化NVIC。其中NVIC_InitTypeDef包括:
NVIC_IRQChannel:中断通道,选择时看清芯片型号为stm32共有的中断通道以及STM32F10X_MD系列中断通道。
其他参数略。
NVIC_SetVectorTable【使用不多】:设置中断向量表。
NVIC_SystemLPConfig【使用不多】:系统低功耗配置。
07:TIM库函数
TIM_DeInit:恢复默认配置。
TIM_TimeBaseInit【重要】:时基单元初始化。用于配置时基单元。
TIM_TimeBaseStructInit:为时基单元结构体赋一个默认值。
TIM_Cmd【常用】:对应定时中断基本结构的“运行控制”模块,用于使能时基单元的计数器。
TIM_ITConfig【常用】:“中断输出控制”模块,用于使能中断输出信号。
下面6个函数对应时基单元的时钟源选择部分。TIM_InternalClockConfig【常用】:选择 内部时钟。
TIM_ITRxExternalClockConfig:选择 ITRx其他定时器 的时钟。
TIM_TIxExternalClockConfig:选择 TIx捕获通道 的时钟。
TIM_ETRClockMode1Config:选择 ETR通过外部时钟模式1 输入的时钟。
TIM_ETRClockMode2Config:选择 ETR通过外部时钟模式2 输入的时钟。
TIM_ETRConfig:不是用于选择时钟的,而是单独用来配置ETR引脚的预分频器、极性、滤波器等参数。
下面是一些可以单独更改某些参数的函数,可以防止每次更改参数都要进行一次初始化。TIM_PrescalerConfig:单独更改时基单元 预分频 的值。还可以选择 预分频器 是否启用缓冲寄存器。
TIM_CounterModeConfig:单独改变时基单元计数器的计数模式。
TIM_ARRPreloadConfig:自动重装器的预装功能配置,也就是选择时基单元的 计数器 是否启用缓冲寄存器。
TIM_SetClockDivision:单独配置时基单元的 时钟分频系数。这个系数的作用位置比预分频器靠前,但功能与预分频器相同,只不过只能选择固定的分频系数(不分频、2分频、4分频),对分频要求不高则一般配置为不分频。
TIM_SetCounter:给计数器写入一个值。
TIM_SetAutoreload:给自动重装载寄存器写入一个值。
TIM_GetCounter:获取当前计数器的值。
TIM_GetPrescaler:获取当前的预分频器的值。
最后4个是获取定时中断标志位和清除定时中断标志位的函数。TIM_GetFlagStatus:用于主函数,获取定时中断标志位的状态。
TIM_ClearFlag:用于主函数,清除定时中断标志位的状态。
TIM_GetITStatus:用于中断函数,获取定时中断标志位的状态。
TIM_ClearITPendingBit:用于中断函数,清除定时中断标志位的状态。配置输出比较模块:
- TIM_OC1Init【常用】:配置第一路输出比较模块。TIM_OC2Init、TIM_OC3Init、TIM_OC4Init则分别是配置第二、三、四路。
- TIM_OCStructInit【常用】:给输出比较结构体赋一个默认值。
- TIM_CtrlPWMOutputs【重要】:仅高级定时器使用,使用高级定时器输出PWM波时,必须调用此函数,否则PWM将不能正常输出。
- TIM_ForcedOC1Config【不常用】:配置强制输出模式,但由于占空比100%输出高电平、0%输出低电平,与强制输出高、低电平等价,所以使用不多。第二、三、四路同理。
- TIM_OC1PreloadConfig【不常用】:用于配置CCR寄存器的预装功能,即CCR的影子寄存器。不会立即生效,而是在更新时间后才会生效。第二、三、四路同理。
- TIM_CCPreloadControl:一次性设置所有的4路输出比较通道寄存器CCR的预装载方式,也就是是否启用影子寄存器。
- TIM_OC1FastConfig【不常用】:用于配置快速使能,在参考手册“14.3.10单脉冲模式”有介绍。第二、三、四路同理。
- TIM_ClearOC1Ref【不常用】:在参考手册“14.3.11在外部事件时清除OCxREF信号”有介绍。第二、三、四路同理。
- TIM_OC1PolarityConfig、TIM_OC1NPolarityConfig:用于单独设置输出比较的极性,第二、三、四路同理。带N的函数就是高级定时器里互补通道的配置。这个极性设置与 输出比较模块结构体 中的设置极性相同。一般来说结构体中的参数都有一个专门的函数用于修改。
- TIM_CCxCmd、TIM_CCxNCmd:用于单独修改输出使能参数。
- TIM_SelectOCxM:用于单独更改输出比较模式的函数。
- TIM_SetCompare1【重要】:用于单独更改CCR寄存器的值,可以更改PWM波的占空比。第二、三、四路同理。
配置输入捕获模块:
TIM_ICInit【常用】:初始化输入捕获单元,只能配置单一通道。注意与输出比较模块的四个通道各自有一个初始化函数不同,输入捕获模块的四个通道共用一个初始化函数。这是因为有交叉通道的配置,整合在一个函数中会比较方便。
TIM_PWMIConfig【常用】:初始化输入捕获单元。可以快速的配置通道1和通道2的PWMI模式。
TIM_ICStructInit:给输入捕获结构体赋一个初值。
TIM_GetCapture1【重要】:读取输入捕获通道1的 输入/捕获寄存器CCR1 的值。第二、三、四路同理。
下面四个函数是配置主从触发模式:TIM_SelectOutputTrigger【常用】:选择主模式的输出触发源TRGO。
TIM_SelectInputTrigger【常用】:选择从模式的输入触发源TRGI。
TIM_SelectSlaveMode【常用】:选择从模式要执行的操作。
TIM_SelectMasterSlaveMode:选择是否使能主从触发模式。
下面是单独修改输入捕获通道某些参数:TIM_SetIC1Prescaler:单独配置输入捕获通道1的预分频值。第二、三、四路同理。
配置编码器接口模式
TIM_EncoderInterfaceConfig【常用】:配置编码器接口。
下面是目前还没有涉及到的TIM库函数:TIM_BDTRConfig:用于配置定时器的 BDTR(Break and Dead-Time Register)寄存器。
TIM_BDTRStructInit:给 BDTR 寄存器的配置参数结构体 TIM_BDTRInitTypeDef 赋一个初值。
TIM_GenerateEvent:强制定时器产生中断。
TIM_DMAConfig:配置TIM模块的 DMA传输功能。stm32中定时器模块可以与 DMA 控制器进行集成,通过 DMA 传输机制实现定时器的计数器值、比较寄存器值等数据的快速传输,减少 CPU 的负担,提高系统的效率。
TIM_DMACmd:使能或禁用定时器的 DMA 传输功能。
TIM_SelectCOM:选择定时器模块的复合输出模式(Complementary Output Mode)包括主输出模式、复合模式、复合滤波模式等。COM模式可以实现多种输出波形的生成,例如矩形波、三角波、脉冲波等,同时还可以实现硬件互锁、反相输出、输出极性选择等功能。
TIM_SelectCCDMA:使能或禁用通道比较DMA传输状态。
TIM_UpdateDisableConfig:使能或禁用定时器的更新事件。
TIM_UpdateRequestConfig:配置更新请求(URS)寄存器的功能,从而实现定时器的周期性更新。。
TIM_SelectHallSensor:选择不同的霍尔传感器模式,从而实现电机的精确控制。
TIM_SelectOnePulseMode:选择单脉冲模式,从而实现精确的时间控制。
08ADC库函数
ADC初始化/一般性配置:
RCC_ADCCLKConfig【必需】:配置 ADCCLK 的分频器(rcc库函数)。可以对APB2的72MHz时钟选择2、4、6、8分频,输入到ADCCLK。但由于ADCCLK规定不能超过14MHz,所以一般选择分频系数为6。
ADC_DeInit:将ADCx的配置恢复成默认值。
ADC_Init【必需】:ADC的初始化函数。
ADC_StructInit:给ADC结构体赋一个默认值。
ADC_Cmd【必需】:ADC外设的开关控制,用于给ADC上电。
间断模式:
ADC_DiscModeCmd:是否启用间断模式。
ADC_DiscModeChannelCountConfig:配置间断模式,每隔几个通道间断一次。
触发转换:
ADC_SoftwareStartConvCmd:软件触发。用于软件触发ADC进行转换。
ADC_ExternalTrigConvCmd:ADC外部触发转换控制。是否允许外部触发转换。默认关闭。
ADC_GetSoftwareStartConvStatus【不常用】:获取软件开始转换状态,看看规则通道是否已经开始转换,但并不能用于指示转换的结束。
配置通道:
ADC_TempSensorVrefintCmd:开启内部的温度传感器、参考电压通道作为输入源。
ADC_RegularChannelConfig【必需】:ADC规则组通道配置。给序列的每个位置填写指定的通道。
获取结果:
ADC_GetFlagStatus:获取ADC内任意指定标志位状态(比如转换结束标志位EOC)。
ADC_ClearFlag:清除所选定的标志位。
ADC_GetConversionValue:获取ADC转换值,就是用于读取转换之后的结果。
ADC_GetDualModeConversionValue:获取ADC双模式转换值。
ADC校准【必需】:ADC初始化完成后,依次调用即可。ADC_ResetCalibration:复位校准。
ADC_GetResetCalibrationStatus:获取校准状态。
ADC_StartCalibration:开始校准。
ADC_GetCalibrationStatus:获取开始校准状态。
注入组的配置:ADC_AutoInjectedConvCmd
ADC_InjectedDiscModeCmd
ADC_ExternalTrigInjectedConvConfig
ADC_ExternalTrigInjectedConvCmd
ADC_SoftwareStartInjectedConvCmd
ADC_GetSoftwareStartInjectedConvCmdStatus
ADC_InjectedChannelConfig
ADC_InjectedSequencerLengthConfig
ADC_SetInjectedOffset
ADC_GetInjectedConversionValue
DMA相关:ADC_DMACmd:开启DMA,使其可以转运数据。
中断相关:ADC_AnalogWatchdogCmd:软件看门狗使能。
ADC_AnalogWatchdogThresholdsConfig:软件看门狗的上下阈值配置。
ADC_AnalogWatchdogSingleChannelConfig:软件看门狗的通道配置。
ADC_ITConfig:ADC的中断输出控制。用于控制某个中断能否通向NVIC。
ADC_GetITStatus:获取中断标志位。
ADC_ClearITPendingBit:清除中断标志位。
09DMA库函数
DMA_DeInit:将DMA恢复到默认配置。
DMA_Init【必需】:DMA初始化。
DMA_StructInit:给DMA的初始化结构体赋一个初值。
DMA_Cmd【必需】:DMA的开关控制。
DMA_ITConfig:DMA的中断输出使能,用于开启DMA中断。
DMA_SetCurrDataCounter:设置DMA计数器。
DMA_GetCurrDataCounter:获取当前DMA的计数器值。
DMA_GetFlagStatus:主函数,获取DMA的各种标志位。
DMA_ClearFlag:主函数,清除DMA各种标志位。
DMA_GetITStatus:中断函数,获取DMA的各种标志位。
DMA_ClearITPendingBit:中断函数,清除DMA的各种标志位。
10:UART库函数
一般性配置和正常收发数据功能:
USART_DeInit:将USART结构体恢复成默认值。
USART_Init【必需】:初始化USART结构体。
USART_StructInit:给USART结构体赋一个初值。
USART_Cmd【常用】:USART的开关控制。
USART_ITConfig【常用】:USART的中断配置。
USART_SendData【常用】:发送数据,写DR寄存器。
USART_ReceiveData【常用】:接收数据,读DR寄存器。
USART_GetFlagStatus:主函数调用,获取USART的各种标志位。
USART_ClearFlag:主函数调用,清除USART指定的标志位。
USART_GetITStatus:中断函数调用,获取中断状态。
USART_ClearITPendingBit:中断函数调用,清除中断状态。
其他单独的配置:USART_SetGuardTime:在两个连续字符之间添加一个额外的时间间隔,默认为1位。
USART_SetPrescaler:设置波特率发生器的预分频值DIV,以产生相应的比特率。
USART_HalfDuplexCmd:启用或禁用半双工模式。
USART_OverSampling8Cmd:启用或禁用USART的8倍过采样模式。在8倍过采样模式下,USART对串行数据线的采样次数将达到8次,从而提高数据传输的精度和可靠性。
USART_OneBitMethodCmd:启用或禁用单线半双工通信模式。
DMA触发源:USART_DMACmd:开启USART的DMA硬件触发源。
时钟同步功能:USART_ClockInit:时钟输出功能,时钟输出初始化。
USART_ClockStructInit:时钟输出功能,时钟输出结构体初始化。
流控功能(总线通信):USART_SetAddress:总线通信功能,设置USART的地址。
USART_WakeUpConfig:总线通信功能,启用USART唤醒功能,检测到特定事件就会被唤醒。
USART_ReceiverWakeUpCmd:总线通信功能,启用USART的接收唤醒功能,接收到特定的数据包就会被唤醒。
LIN总线通信:USART_LINBreakDetectLengthConfig:LIN模式,检测到BREAK信号的长度。
USART_LINCmd:开启LIN模式。
USART_SendBreak:发送一个BREAK信号。
智能卡模式:USART_SmartCardCmd:启用或禁用智能卡模式。
USART_SmartCardNACKCmd:在USART智能卡模式中,启用或禁用非应答模式。
红外接收IrDA模式:USART_IrDAConfig:配置USART通信中的红外数据通信模式。
USART_IrDACmd:启用或禁用红外数据通信模式(IrDA)
11:IIC外设库函数
I2C_DeInit:将I2C外设的寄存器恢复成默认值。
I2C_Init【必需】:初始化I2C。
I2C_StructInit:将指定的I2C初始化结构体中的成员变量设置为默认值。
I2C_Cmd【必需】:开启I2C外设。
收发时序常用:I2C_GenerateSTART:生成起始条件。
I2C_GenerateSTOP:生成终止条件。
I2C_AcknowledgeConfig:配置应答使能。也就是stm32作为主机,收到1个字节后,是否给从机应答。
I2C_SendData:发送数据。将数据写入到DR寄存器。
I2C_ReceiveData:接收数据。从DR寄存器中读取数据。
I2C_Send7bitAddress:发送7位地址的专用函数。当然也可以用I2C_SendData函数完成该功能。
I2C_FastModeDutyCycleConfig:用于配置I2C的快速模式(Fast-mode)占空比。这个一般再初始化的时候就配置好不变了。
状态监控函数:(更多细节内容可以查看源码注释)
上文提到EVx事件可能会包含多个标志位,如果一个一个判断可能非常麻烦,所以i2c的库函数还额外给出了“状态监控函数”,来辅助用户同时判断多个标志位,以确定某个EVx状态是否发生。下面有三种方法:基本状态监控——I2C_CheckEvent【推荐】。可以同时判断一个或多个标志位,来确定EVx状态是否发生,UP主推荐。
高级状态监控——I2C_GetLastEvent。实际并不高级,只是将两个状态寄存器SR1、SR2拼接成16位数据发送给用户。不推荐。
基于标志位的状态监控——I2C_GetFlagStatus。就是一次判断一个标志位。
I2C_ClearFlag:清除标志位。主函数调用。
I2C_GetITStatus:读取中断标志位。中断函数调用。
I2C_ClearITPendingBit:清除中断标志位。中断函数调用。
I2C_ITConfig:使能或禁用I2C的中断功能。
DMA配置:I2C_DMACmd:使能或禁用I2C外设的DMA传输,也就是DMA的硬件触发源。默认禁用。
I2C_DMALastTransferCmd:控制I2C外设在DMA传输结束后是否自动停止传输。
广播通信模式/双地址模式:I2C_OwnAddress2Config:用于配置I2C外设的第二个从设备地址,该地址用于从设备模式中的广播通信。
I2C_DualAddressCmd:用于使能或禁用I2C外设的双地址模式。
I2C_GeneralCallCmd:使能或禁用I2C总线的广播通信模式。
SMBus协议:I2C_SMBusAlertConfig:用于配置SMBus Alert功能。
PEC校验:I2C_TransmitPEC:启用或禁用I2C协议中的PEC(Packet Error Checking)校验。
I2C_PECPositionConfig:配置PEC校验码在I2C通信帧中的位置。
I2C_CalculatePEC:用于计算给定数据块的PEC校验码。
I2C_GetPEC:用于获取接收到的I2C数据帧的PEC校验码。
其他配置:I2C_ReadRegister:通用的读取寄存器函数,用于读取I2C外设的寄存器值。
I2C_SoftwareResetCmd:用于向I2C总线发送软件复位命令,将I2C外设复位到初始状态,以便重新开始通信。当I2C外设出现异常或通信故障时,可以通过软件复位命令将其恢复到正常状态。
I2C_NACKPositionConfig:用于配置I2C外设在接收数据时的非应答位位置,在数据字节的哪个位置发送NACK位。
I2C_ARPCmd:用于使能或禁用I2C的自动重试机制(Automatic Retry Mechanism)。自动重试机制的原理是当发送方无法收到接收方的应答信号时,会自动重新发送数据帧,直到接收方成功应答为止。自动重试机制的次数可以通过软件编程进行配置。
I2C_StretchClockCmd:用于使能或禁用I2C时钟延长功能(Clock Stretching)。I2C从设备可以通过拉低时钟线的方式来向主设备表示其未准备好接收数据,主设备需要等待从设备准备好之后再继续传输数据。
12 :SPI外设库函数
SPI/I2S常用设置:
SPI_I2S_DeInit:将SPI或I2S外设恢复到默认的初始状态。
SPI_Init【必需】:初始化SPI(串行外设接口)外设,并配置其相关参数,包括数据传输模式、时钟极性和相位、数据位长度等。
I2S_Init:初始化I2S(串行音频接口)外设,并配置其相关参数,包括数据格式、数据位长度、时钟极性和相位等。
SPI_StructInit:将SPI外设的配置结构体初始化为默认值。
I2S_StructInit:将I2S外设的配置结构体初始化为默认值。
SPI_Cmd【必需】:使能或禁用SPI外设。
I2S_Cmd:使能或禁用I2S(串行音频接口)外设。
SPI_I2S_SendData【常用】:用于向SPI或I2S外设发送数据。但只是将数据送到发送缓冲区。
SPI_I2S_ReceiveData【常用】:从SPI或I2S外设接收数据。但只是将数据从接收缓冲区读出。
关于中断及标志位【必需】:SPI_I2S_GetFlagStatus:常用于非中断函数。获取SPI或I2S外设的特定标志位的状态。常见的标志位包括传输完成标志(TXE或BTF)、接收缓冲区非空标志(RXNE)、传输错误标志(OVR、CRCERR等)以及其他特定功能的标志。
SPI_I2S_ClearFlag:常用于非中断函数。用于软件清除SPI或I2S外设的特定标志位。
SPI_I2S_ITConfig:配置SPI或I2S外设的中断使能状态。注意在使用中断功能之前,还需要配置中断优先级、编写中断服务程序以及使能全局中断。
SPI_I2S_GetITStatus:常用于中断函数。用于获取SPI或I2S外设的特定中断标志位的状态。
SPI_I2S_ClearITPendingBit:常用于中断函数。用于清除SPI或I2S外设的特定中断标志位。
单独参数的配置:SPI_DataSizeConfig:配置SPI外设的数据位长度。
SPI_NSSInternalSoftwareConfig:配置SPI外设的NSS(多主机模式)的内部软件控制模式。
SPI_SSOutputCmd:使能或禁用SPI外设的SS(片选信号)输出功能。
SPI_BiDirectionalLineConfig:用于配置SPI外设的双向数据线模式。
DMA配置(连续数据传输):SPI_I2S_DMACmd:使能或禁用SPI或I2S外设的DMA传输。
CRC配置:SPI_TransmitCRC:向SPI外设发送CRC(循环冗余校验)值。
SPI_CalculateCRC:用于计算SPI外设接收到的数据的CRC(循环冗余校验)值。
SPI_GetCRC:用于从SPI外设获取计算得到的CRC(循环冗余校验)值。
SPI_GetCRCPolynomial:用于从SPI外设获取当前配置的CRC(循环冗余校验)多项式值。
13 :MCU和单片机的区别
原理不同:
mcu又称单片微型计算机(Single Chip Microcomputer )或者单片机,重点在于单片。
单片机则是把一个计算机系统集成到一个芯片上,重点在于芯片,相当于微型计算机但缺少I/O设备。
指代对象不同:
MCU是指单片微型计算机或者单片机。单片机则是微型计算机家族中的一个分支而已。
范畴不同:
CPU有三个分支:DSP、MCU(Micro Control Unit,微控制器单元)、MPU(Micro Processor Unit,微处理器单元)。
单片机是MCU中最具有代表性,是MCU的实现。
功能不同。
MCU在不同的场合有不同的应用。例如手机、遥控器甚至汽车电子和机器手臂的控制等都有涉及。
单片机的使用领域比MCU的要更为广泛,从家用电器和通讯设备到智能仪表以及导航系统都有应用。
用途不同:
MCU倾向于不同信息源的多种数据的处理诊断和运算,更侧重于控制。
而单片机就是一块芯片,主要是对数据进行高速化处理。
注:但通常认为MCU和单片机概念等价。
STM32F103C8T6主要指标:
系列:主流系列STM32F1
内核:ARM Cortex-M3
主频:72MHz
RAM(运行内存):20K(SRAM)
ROM(程序存储器):64K(Flash)
供电:2.0~3.6V(标准3.3V)。由于USB供电是5V,所以还要加稳压芯片。(注:51单片机为5V供电)
封装:LQFP48