STM32自学笔记答题.doc
文本预览下载声明
原子位操作:
原子位操作定义在文件中。令人感到奇怪的是位操作函数是对普通的内存地址进行操作的。原子位操作在多数情况下是对一个字长的内存访问,因而位号该位于0-31之间(在64位机器上是0-63之间),但是对位号的范围没有限制。
原子操作中的位操作部分函数如下:void set_bit(int nr, void *addr)??????? 原子设置addr所指的第nr位void clear_bit(int nr, void *addr)????? 原子的清空所指对象的第nr位void change_bit(nr, void *addr)???????? 原子的翻转addr所指的第nr位int test_bit(nr, void *addr)??????????? 原子的返回addr位所指对象nr位int test_and_set_bit(nr, void *addr)??? 原子设置addr所指对象的第nr位,并返回原先的值int test_and_clear_bit(nr, void *addr)? 原子清空addr所指对象的第nr位,并返回原先的值int test_and_change_bit(nr, void *addr)? 原子翻转addr所指对象的第nr位,并返回原先的值
?
????unsigned long word = 0;
??? set_bit(0, word); /*第0位被设置*/
??? set_bit(1, word); /*第1位被设置*/
?clear_bit(1, word); /*第1位被清空*/
change_bit(0, word); /*翻转第0位*/
STM32的GPIO锁定:
中断挂起:
因为某种原因,中断不能马上执行,所以“挂起”等待。比如有高、低级别的中断同时发生,就挂起低级别中断,等高级别 HYPERLINK /s?wd=%E4%B8%AD%E6%96%AD%E7%A8%8B%E5%BA%8Ftncprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YdrAR3nyRznjf1Phn1PH7-0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPHcvrHf4PWmz \t _blank 中断程序执行完,在执行低级别中断。
固文件:
固件(Firmware)就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。
固件库:包含各个外设或者内核的驱动头文件和C文件。
TIx的输入捕获滤波器(消抖):
采样频率fSAMPLING,采样次数N,如果以采样频率对一脉冲进行采样时,如果在N个采样方波里该脉宽不变,则视为一次有效的脉冲,否则视为无效的脉冲。
高级定时器的PWM互补输出:
常用于X相电机驱动,其中的互补输出则防止电机的死区出现。
Systick系统时钟(以cortex-M3为基准):
其两大作用:
产生精确的延时
提供给操作系统一个单独的心跳(时钟)节拍
Cortex-M3内核中包含一个Systick时钟,其为一个24位递减计数器,计数器设定初始值并使能后,每经一个系统时钟计数值减一,计数到零时COUNTFLAG置位,计数器装载,触发中断。
四大寄存器:
(1)、STK_CTRL:STK控制寄存器
Bit0: ENABLE
??????????SysTick timer的使能位,1使能Systick timer,0关闭Systick timer
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驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。死区控制就是在上半桥关断后,延迟一段时间再打开下
显示全部