a) 工程的建立:
1) stdPeiph_Driver,下面存放的是ST官方提供的固件库函数,里面内容不需要用户修改。
2) Startup下面存放的是固件库必须的启动文件。不需用户修改。
3) Cmsis下面存放的是固件库必须的启动文件。不需用户修改。
4) APP下面存放的是外设的驱动代码。比如说LED.c里面需要调用stm32f10x_gpio.c里面的函数对其进行初始化。
5) User下面存放的主要是用户代码。
b) IO口模式配置
输入模式 |
输出模式 |
输入浮空(按键用,但亲自实验,浮空输入按键不灵敏) |
开漏输出(输出电流大,高电平需接上拉电阻,应用于电流型驱动) |
输入上拉(输入口用) |
推挽输出(输出口用) |
输入下拉(输入口用) |
复用推挽输出(复用,IO口的第二功能,比如SPI用) |
模拟输入(ADC用) |
复用开漏输出(同上) |
c) 应用相关引脚需要开启相应的时钟,为了降低功耗。
a) SysTick定时器包含在M3内核里,捆绑在NVIC 中。
b) 它是一款24位倒计数定时器,计数到0时可产生中断。
c) 时钟来源可以直接来源于系统时钟,还可以经过8分频之后付给SysTick
a)STM32时钟比较复杂,它可以选择多种时钟源,也可以选择不同的时钟频率,。
b) 从RCC输出的时钟,首先经过AHB总线,分别分配给其他外设时钟,不同的外设挂在不同的桥上。比如ADC,GPIO挂在APB2(最高72MHz)上,而IIC挂在APB1(最高36MHz)上,因此不同的外设所具有不同的时钟频率。
c)芯片默认上电使用系统内部时钟(8MHz)。经本函数库,默认使用系统外部时钟(72MHz)。
d)STM32一共可以有4个晶振源。内部自带高速时钟,外部高速时钟,内部低速时钟,外部高速时钟。
e)系统时钟来源,可来自:内部高速时钟(HIS),外部高速时钟(HSE),HIS或HSE倍频之后的PLL时钟。
a)中断嵌套:中断能够被其他高优先级的中断而中断。
b)优先级:抢占优先级,响应优先级。抢占优先级高的可中断抢占优先级低的,响应优先级高的不可中断响应优先级低的(如果抢占优先级相同,中断同时到达,优先使用响应优先级高的)。
C)EXTI外部中断,每个IO口都可用来作外部中断。16个外部中断组,所以同时独立使用的外部中断IO口只有16个。
(a) stm32的定时器功能十分强大,它共有11个定时器。其中二个高级定时器,4个通用定时,2个基本定时器,以及2个看门狗定时器,1个系统滴答定时器。
定时器 |
类型 |
计数器分辨率 |
计数器类型 |
预分频 系数 |
产生 DMA 请求 |
输入/比较通道 |
互补输出 |
TIM1 TIM8 |
高级定时器 |
16位 |
向上,向下,向上或向下 |
1—65536之间的任意数 |
可以 |
4 |
有 |
TIM2~ TIM5 |
通用定时器 |
16位 |
向上,向下,向上或向下 |
1—65536之间的任意数 |
可以 |
4 |
无 |
TIM6 TIM7 |
基本定时器 |
16位 |
向上计数 |
1到65536之间的任意数 |
可以 |
0 |
无 |
看门狗定时器 |
|
|
|
|
|
|
|
系统滴答定时器 |
SysTick定时器 |
|
向下计数 |
24位计数器 |
|
|
|
(b)通用定时器的功能:16位向上,向下,向上/向下自动装载计数器。
16位可编程预分频器,计数器的时钟频率的预分频系数为1~65536之间的任意值。
4个独立通道,输入捕获,输出比较,PWM生成,单脉冲模式输出。
(c)计数器时钟可以由下列时钟源提供: 内部时钟,外部时钟1,外部时钟2,内壁触发输入。
(a),TIM1.TIM8最多能同时产生7路PWM的输出,TIM2~TIM5等通用定时器能同时产生4路PWM。TIM6和TIM7不能产生PWM。因此STM32最多能同时产生30路的PWM。
(b),具有重映射功能。
a) stm32f103zet6有五路串口。
b)232串口通信,出现较早,全双工
c)485串口通信,出现较晚,半双工。
|
RS-232 |
RS-485 |
优点 |
全双工,价格便宜 |
半双工,价格较贵 |
缺点 |
1, 接口高电平,易损害芯片 2, 传送速率较低,传送距离较短 3, 抗噪声性能较弱 4, 传送距离较短(一般15m) |
1, 接口低电平,芯片不易损坏 2, 传送速率较高,传送距离较远 3, 抗噪声性能较强 4, 传送距离较长(可达1200m) |
d)通用同步异步收发器(URART)利用分数波特率发生器提供宽泛的波特率选择,它支持单向通信,和全,半双工通信。双向通信至少需要两个引脚(RX,TX)。
a)IIC总线是PHILIPS公司推出的一种串行总线,它只需要两根双向的信号线(SDA,SCL)。
每个器件都有自己相应的I2C地址,所以在通信的时候,首先你需要呼叫所需通信器件的地址,然后等待从器件应答之后才能开始通信,
b)应用时需注意两点,空闲时,SDA,SCL必需为高电平,SCL为高电平期间,SDA必须保持稳定,也就是说SDA需要改变时,最好将SCL拉低。否则就会被误判(错误的将信号当成起始信号,或者终止信号处理)。
a)12位ADC是一种逐次逼近型的模拟数字转换器,它有多达18个通道,可同时测量16个外部通道,两个内部通道信号源。各通道可以单次,连续,扫描,间断扫描模式执行。ADC的输入时钟不得超过14MHz.
b)16个多路通道,分成规则组,注入组。(类似中断)
c)单次转换(ADC只转换一次),连续转换(ADC转化完成以后,马上进行另一次转换)。
d)模拟看门狗,如果ADC转换的模拟电压低于或者高于阈值,AWD模拟看门狗将会被置位。
e)扫描模式,扫描一组模拟通道。
g)间断模拟。
a)具有42个16位备份储存器,可以用来储存84个字节的用户应用程序数据。
b)当电源VDD被截断,他们仍然由VBAT维持供电。
c)系统复位或电源复位,待机模式下被唤醒。他们也不会被复位。
d)STM32内部RTC时钟就在备份寄存器中,因此需要操作RTC时钟,就要操作备份寄存器。
e)RCT用来储存时钟的只是一个32位的寄存器,可以记录4294967296s,合计136年。
a)STM32低功耗模式一共有三种模式:睡眠模式(Cortex-M3内核停止),停止模式(所有时钟停止),待机模式(1.8v电源关闭)。它们功耗依次降低。
a)独立看门狗内部专门的40KHZ,低速时钟驱动,即使主时钟发生故障,它也仍然有效。
b)单片机在外界的干扰下,会出现程序跑飞的现象导致出现死循环,看门狗电路就是避免这种情况发现的。
c)看门狗的作用就是在一定时间内没有接收喂狗信号(表示MCU已经跑飞了),便实现处理器自动复位重启(发送复位信号)。
a)窗口看门狗(WWDG)通常被用来监测外部干扰或者不可预见的逻辑条件造成的应用程序背离正常运行序列而产生的软件故障。
a)输入捕获模式可以用来测量脉冲宽度或者频率。
b)STM32定时器除了TIM6和TIM7,其它定时器都具有输入捕获的功能。
c)完成一次捕获还能配置捕获是否触发中断/DMA等。
a)STM32内部没有自带EEPROM,但STM32具有IAP(在应用编程)功能,所以我们能把FLASH当作EEPROM使用。
b)不同型号的FLASH内存大小也有所不同,最小的有16K,最大的有1024K,STM32F103ZET6这款有512K,属于大容量FLASH (另外还有中,小型FLASH)。
C) STM32的闪存模块由:主储存器,信息块,闪存储存器构成。
a) EN25Q64是华邦公司推出的大容量SPIFLASH 产品,容量为64比特,也就是8M。
b) EN25Q64支持标准的SPI,还支持双/四输出的SPI。
c) SPI(serial peripheralinterface),顾明思义就是串行外围设备接口。主要用四根线进行通信,MISO, MOSI, SCLK, CS。
d) SPI传输的过程通过移位寄存器来完成。
a) IS62WV51216是ISSI公司生产的一颗位宽512K容量的CMOS静态内存芯片。它具有高速访问(45ns/55ns访问速度),低功耗,兼容TTL电平接口。全静态操作,字节访问功能。
a) can是一种ISO国际标准化的串行通信协议,是1996年德州电气商博世公司开发出面向汽车开发出来的,现在在欧洲已是汽车网络标准协议。广泛用于工业自动化,船舶,医疗设备,工业设备等方面。
b) CAN传输数据只需两根线就可以了。CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐形电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
c) CAN通行特点:多主控制(在总线空闲时,所有的单元都可以发送消息),系统的柔软性(与总线相连的单元没有类似于“地址”的信息,不像I2C总线上面每个单元都有自己的地址),通信速度(最高1Mnps,最远可达10KM),远程数据请求,错误监测功能,错误通知功能,错误恢复功能,故障封闭,连接(CAN总线是可同时连接多个单元的总线)。
d) CAN的传输主要通过5种类型的帧来进行的。
a) ADX345是一款完整的3轴加速度测量系统,可选择测量范围有±2g, ±4g, ±8g,或±16g。
既能测量运动或冲击导致的动态加速度,也能测量静止加速度。例如重力加速度,使得器件可以作为倾斜传感器使用。
c) 它的分辨率为13位,测量范围达±16g。可以通过SPI或者I2C数字接口访问。
a)SD卡是由MMC卡的基础上发展而来的,它是一种基于半导体快闪记忆器的新一代记忆设备,被广泛用于各种便携设备,如手机,数码相机多媒体播放器。
b)SD卡有两种操作方式,一种是SDIO,还有一种是SPI。