一、二极管:
二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件。
二极管就是由一个由 P 型半导体和 N 型半导体形成的 PN 结加上相应的电极引线及管壳封装而成的
NPN和PNP型三极管的作用:
1. NPN三极管:
基极加高电压,集电极与发射极短路,即三极管导通;
基极加低电压,集电极与发射极开路,即三极管截止。
2. PNP三极管:
基极高电压,集电极与发射极开路,即三极管截止;
基极加低电位,集电极与发射极短路,即三极管导通。
二、输出模式:
1.推挽输出模式:stm32有绝对的控制权,高低电平都由是stm32决定。
2.开漏模式:p-mos是无效的,只有低电平有驱动能力,高电平没有驱动能力
GPIO_Mode_AIN = 0x0,//模拟输入
GPIO_Mode_IN_FLOATING = 0x04,//浮空输入
GPIO_Mode_IPD = 0x28,//下拉输入
GPIO_Mode_IPU = 0x48,//上拉输入
GPIO_Mode_Out_OD = 0x14,//开漏输出
GPIO_Mode_Out_PP = 0x10,//推挽输出
GPIO_Mode_AF_OD = 0x1C,//复用开漏
GPIO_Mode_AF_PP = 0x18//复用推挽
三、MOS管:
MOS,是MOSFET的缩写。MOSFET 金属-氧化物半导体场效应晶体管,简称金氧半场效晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET)。
一般是金属(metal)—氧化物(oxide)—半导体(semiconductor)场效应晶体管,或者称是金属—绝缘体(insulator)—半导体。
它是利用控制输入回路的电场效应来控制输出回路电流的一种半导体器件。由于它仅靠半导体中的多数载流子导电,又称单极型晶体管。
四、中断:
STM32的中段不存在先来后到的排队方式,在任何时候都是优先级高的先响应
NVIC就是STM32中用来管理中断、分配优先级的
WWDG 窗口看门狗:程序卡死了,没有及时喂狗,窗口看门狗就会申请中断,使程序跳到窗口看门狗的中断程序
AFIO是用来中断引脚选择的
:或门:与门:非门(输入1就输出0,0则相反)
EXTI和NVIC的时钟是一直打开的不需要再打开,RCC和AFIO需要打开
EXTI的GPIO配置是浮空或上拉输入或带下拉输入
个人经验:在很长一段时间里我都不理解是怎么从主函数跳转到中断函数的,看了江科大的视频才知道是由EXTI_InitStructure.EXTI_Trigger这个决定的看是什么触发中断然后跳进中断里
五、定时器:
•定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
stm32中的定时器分为3种:“基本定时器”(TIM6,TIM7)、“通用定时器”(TIM2、 TIM3、 TIM4和TIM5)、“高级定时器”(TIM1,TIM2)
高级定时器用的是APB2总线,通用和基本定时器都是用APB1总线。注意不要开错了
常用的是通用定时器
配置时钟部分:
void TIM_InternalClockConfig(TIM_TypeDef* TIMx);//选择内部时钟
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
//选择ITRx其他定时器的时钟
void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, uint16_t TIM_ICPolarity, uint16_t ICFilter);//选择TIx捕获通道的时钟(参数:1.定时器选择、2.引脚选择、3.极性选择、4.滤波器)
void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);//选择外部时钟模式1输入的时钟
void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);//选择外部时钟模式2输入的时钟
时基单元:用void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
中断输出控制:TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
运行控制:void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
CK_PSC是72M频率
预分频器的值(PSC)ARR自动重装器的值 CCR的值占空比(要和ARR配合使用)
个人感受:在学习江科大的视频里6-2的部分,里面讲的
我疑惑了很久,通过自己一遍遍试和研究才能得出结论,所以还是要亲自实践一下
PWM:
占空比:Ton/Ts;
分辨率:占空比变化的步距(如分辨率为0.1那就是1.1可以变到1.2如果是1那就只能变到2.1越小越好不过要考虑硬件)
ref:参考信号
输出模式是通过来选择的
输出模式控制器里面的执行逻辑:
PWM的基本结构:(以PWM模式1为例)
对于普通的开漏/推挽输出引脚的控制权是来自输出数据寄存器的,如果想让定时器来控制引脚那就要使用复用开漏/推挽输出的模式,使用要使用PWM要把GPIO设置成GPIO_Mode_AF_PP模式
六、输入捕获(IC):
•输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数
•每个高级定时器和通用定时器都拥有4个输入捕获通道
•可配置为PWMI模式,同时测量频率和占空比
•可配合主从触发模式,实现硬件全自动测量
频率的定义就是一秒内重复出现了多少个周期那就是多少HZ
七、模拟/数字转换(ADC)
注意: 温度传感器和VREFINT只能出现在主ADC1中。
STM32是12位的,所以最大值是2的12次方-1也就是4095
ADC测电压是思路就是AD的范围是0-4095电压是0-3.3V(0对应0|3.3对应4095)中间只要乘除一个数就行
模拟看门狗可以监测指定的某些通道,当AD值高于它设定的上阈值或低于下阈值,自动跳入中断,可以在中断中执行程序。
GPIO口要选择 GPIO_Mode_AIN这个模式因为这个模式下GPIO口是无效的防止GPIO输出的电压对模拟电压进行干扰,所以是ADC的专属模式
关于ADC预分频器只能选择6或者8分频,因为ADCCLK最大支持14MHz2,4分频都会超出范围
转换模式:
1、单次转换,非扫描模式:只有序列1有效
2、连续转换,非扫描模式:只有序列1有效,转换结束后不会结束,而是立马开始下一轮转换,然后一直持续下去(不需要手动转换,也不用判断是否结束,直接读取数据寄存器)
3、单次转换,扫描模式:菜单可以一次转换多个AD转换
4、连续转换,扫描模式:菜单可以一次转换多个AD转换,转换结束后不会结束,而是立马开始下一轮转换,然后一直持续下去(不需要手动转换,也不用判断是否结束,直接读取数据寄存器)
八、DMA
Flash是主闪存(是只读的),SRAM是运行内存