最新STM32自学笔记讲解资料.docx

上传人:b****3 文档编号:1922349 上传时间:2022-10-25 格式:DOCX 页数:18 大小:1,007.58KB
下载 相关 举报
最新STM32自学笔记讲解资料.docx_第1页
第1页 / 共18页
最新STM32自学笔记讲解资料.docx_第2页
第2页 / 共18页
最新STM32自学笔记讲解资料.docx_第3页
第3页 / 共18页
最新STM32自学笔记讲解资料.docx_第4页
第4页 / 共18页
最新STM32自学笔记讲解资料.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

最新STM32自学笔记讲解资料.docx

《最新STM32自学笔记讲解资料.docx》由会员分享,可在线阅读,更多相关《最新STM32自学笔记讲解资料.docx(18页珍藏版)》请在冰豆网上搜索。

最新STM32自学笔记讲解资料.docx

最新STM32自学笔记讲解资料

一、原子位操作:

原子位操作定义在文件中。

令人感到奇怪的是位操作函数是对普通的内存地址进行操作的。

原子位操作在多数情况下是对一个字长的内存访问,因而位号该位于0-31之间(在64位机器上是0-63之间),但是对位号的范围没有限制。

原子操作中的位操作部分函数如下:

voidset_bit(intnr,void*addr)       原子设置addr所指的第nr位

voidclear_bit(intnr,void*addr)     原子的清空所指对象的第nr位

voidchange_bit(nr,void*addr)        原子的翻转addr所指的第nr位

inttest_bit(nr,void*addr)           原子的返回addr位所指对象nr位

inttest_and_set_bit(nr,void*addr)   原子设置addr所指对象的第nr位,并返回原先的值

inttest_and_clear_bit(nr,void*addr) 原子清空addr所指对象的第nr位,并返回原先的值

inttest_and_change_bit(nr,void*addr) 原子翻转addr所指对象的第nr位,并返回原先的值

 

    unsignedlongword=0;

   set_bit(0,&word);/*第0位被设置*/

   set_bit(1,&word);/*第1位被设置*/

 clear_bit(1,&word);/*第1位被清空*/

change_bit(0,&word);/*翻转第0位*/

二、STM32的GPIO锁定:

三、中断挂起:

因为某种原因,中断不能马上执行,所以“挂起”等待。

比如有高、低级别的中断同时发生,就挂起低级别中断,等高级别中断程序执行完,在执行低级别中断。

四、固文件:

固件(Firmware)就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。

五、固件库:

包含各个外设或者内核的驱动头文件和C文件。

六、TIx的输入捕获滤波器(消抖):

采样频率fSAMPLING,采样次数N,如果以采样频率对一脉冲进行采样时,如果在N个采样方波里该脉宽不变,则视为一次有效的脉冲,否则视为无效的脉冲。

七、高级定时器的PWM互补输出:

常用于X相电机驱动,其中的互补输出则防止电机的死区出现。

八、Systick系统时钟(以cortex-M3为基准):

其两大作用:

1、产生精确的延时

2、提供给操作系统一个单独的心跳(时钟)节拍

Cortex-M3内核中包含一个Systick时钟,其为一个24位递减计数器,计数器设定初始值并使能后,每经一个系统时钟计数值减一,计数到零时COUNTFLAG置位,计数器装载,触发中断。

3、四大寄存器:

(1)、STK_CTRL:

STK控制寄存器

Bit0:

ENABLE

          SysTicktimer的使能位,1使能Systicktimer,0关闭Systicktimer

Bit1:

TICKINT

          异常触发使能位,TICKINT=1,STK_VAL计数到0触发异常;TICKINT=0,不触发异常

Bit2:

CLKSOURCE

          Systick时钟选择位,SysTick=1,时钟为AHB时钟;0时钟位AHB/8(属于它所挂的AHB中。

Bit16:

COUNTFLAG

          计数为0标志位, 当STK_VAL计数到0,此标志位会被置1

(2)、STK_LOAD:

STK装载寄存器位0~23

(3)、STK_VAL:

STK当前值寄存器位0~23。

(4)、STK_CALIB:

九、死区时间控制:

死区,简单解释:

通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。

每个桥的上半桥和下半桥是是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。

死区控制就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁。

这段延迟时间就是死区

PWM的上下桥臂的三极管是不能同时导通的。

如果同时导通就会是电源两端短路。

所以,两路触发信号要在一段时间内都是使三极管断开的。

这个区域就叫做“死区”优点就不用说了。

缺点是使谐波的含量有所增加。

死区时间大,模块工作更加可靠,但会带来输出波形的失真及降低输出效率。

死区时间小,输出波形要好一些,只是会降低可靠性,一般为us级。

最佳的设置是:

在保证安全的前提下,越小越好。

以不炸功率管、输出不短路为目的。

十、换相事件(COM事件):

十一、存储器的编码格式:

1、大端格式:

在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,例如存16位宽的数据0x1234,其存储方式如图:

2、小端格式:

低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节,例如存16位宽的数据0x1234,其存储方式如图:

十二、位段与别区名:

现在STM32的位段、位带别名区就是为了实现对位操作的功能,它的对象可以是SRAM、I/O(STM32F407有复位/置位寄存器实现对位操作)和外设空间。

要实现对这些地方的某一位的操作。

它是这样做的:

在寻址空间(32位对应的地址空间为4GB)的另一地方,取个别名区空间,从这个地址开始处,每一个字(32BIT)对应SRAM或I/O的一位。

使用位段的好处:

可以把代码缩小,速度更快,效率更高,更安全。

一般操作要6条指令,而使用位带别名区只要4条指令。

一般操作是读-改-写的方式,而位带别名区是写操作。

防止中断对读-改-写的方式的影响。

映射公式为:

bit_word_addr=bit_band_base+(byte_offsetx32)+(bit_number×4)其中:

—bit_word_addr代表别名区域中将映射到目标位的字的地址

—bit_band_base代表别名区域的起始地址

—byte_offset代表目标位所在位段区域中的字节编号

—bit_number代表目标位的位位置(0-7)

存的时候是以字节的形式存的,但是写入与写出是以32位存的,固结果是位数乘以4,

其中SRAM和外设的位带区域和位带别名如下图:

alias:

别名;

 

十三、SYSCFG寄存器:

想要操作SYSCFG模块寄存器必须先使能SYSCFG模块时钟,RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);

十三、存储器的固定存储映射:

代码区域起始地址为0x00000000(通过ICode和DCode访问),代码区域起始地址为0x20000000(通过ICode访问)。

十三、STM32的自举:

自举就是自己让自己启动吧!

有一个BOOT引脚可以控制通过三种方式中的任何一种启动。

十四、上电、掉电、欠压复位:

欠压复位:

单片机内部电压监控电路形成的异步复位,当电源电压VDD电压小于一定触发阈值时,发出复位信号并保持到电源电压大于欠压复位功能恢复电压。

欠压复位是用来确保单片机的电源并不在有效工作电压范围之内时内部产生复位过程,使得单片机保持在正确的状态中,欠压复位有三个重要的参数:

1)VTR是欠压复位功能恢复电压,大于该电压值的时单片机的欠压复位状态就结束了;

2)VTF是欠压复位功能触发电压,小于该电压值的时单片机将保持欠压复位状态;

3)VHYS是欠压复位的回差电压,VHYS=VTR-VTF;这个电压的主要目的是防止电源有噪声干扰的时候频繁的反弹,一般在0.1~0.2V之间。

如图所示,欠压复位是在电源电压达到VTR以后,内部的计数器才工作,因此在上电复位完成以后,欠压复位继续工作直至欠压复位完成既定的延迟后,整个单片机才会退出复位状态;因此内部引入欠压复位电路对于解决电源电压上升率过快和过慢的情况都有很大的帮助。

需要注意的是低电压的复位电平阈值是和供电电压相关的,并且按照比例设定的无法更改,因此如果系统上不合则需要考虑外部的复位方法。

十四、BOOT设置(BOOT1,BOOT0):

1)(BOOT1=x,BOOT0=0):

主FLASH区,即扇区,正常工作模式。

2)(BOOT1=0,BOOT0=1):

系统存储器,芯片内部一块特定的区域,该区域出厂时预置了一段Bootloader,即ISP程序,这部分已经被固化了,无人能改。

这也是利用串口下载时的第一步:

BOOT1=0,BOOT0=1。

ISP下载模式。

3)(BOOT1=1,BOOT0=1):

SRAM,芯片内置RAM,即内存。

调试模式。

十五、关于串口:

方向以PC机为主

●RTS:

请求发送,PC→→设备

●CTS:

清楚发送,设备→→PC

●DTR:

数据终端准备好,设备→→PC

●DSR:

数据设备准备好,PC→→设备

●DCD:

载波检测

 

十六、关于一键下载原理:

CH340G上电后DTR#和RTS#都为高电平,在用MCUISP烧写软件时,我们在软件下方选择“DTR的低电平复位,RTS高电平进BootLoader”,CH340GIC在实际操作时引脚的变化为“DTR#拉高,RTS#拉低”,即软件设置和实际情况是取非的,相反的。

十七、关于抢占优先级和响应优先级:

STM32(Cortex-M3)中有两个优先级的概念:

抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。

(1)、抢占先式优先级(pre-emptionpriority)

 高抢占先式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应,俗称中断嵌套。

(2)、副优先级(subpriority)

在抢占先式优先级相同的情况下,高副优先级的中断优先被响应;

    在抢占先式优先级相同的情况下,如果有低副优先级中断正在执行,高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到响应—非抢断式响应(不能嵌套)。

(3)、判断中断是否是被响应的依据

首先是占先式优先级,其次是副优先级;

     占先式优先级决定是否会有中断嵌套;

(4)、优先级冲突的处理

     具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断的嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。

   当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。

如果这个两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

十八、结构体成员变量地址对齐方式:

(举例解释说明)

举个例子:

struct {

    char a;    //1byte

    int b;    //4byte

    char c[2]    //2byte

    double d;    //8byte

}Struct_A;

1、8位机里就按字节对齐,那么上述结构体共占用1+4+2+8=15byte。

2、在16位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1