stm32入门自学笔记

本文详细介绍了二极管的单向导电性,以及NPN和PNP型三极管的工作原理。接着,讨论了STM32的输出模式,包括推挽和开漏模式,并列举了GPIO的不同模式。还涉及了中断机制,如EXTI和NVIC在中断处理中的角色。此外,提到了定时器的种类和配置,以及输入捕获功能。最后,概述了ADC转换和DMA传输在STM32中的应用,强调了模拟输入和ADC的电压测量方法。
摘要由CSDN通过智能技术生成

一、二极管:

二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件。

在这里插入图片描述

在这里插入图片描述

 二极管就是由一个由 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)—半导体。

它是利用控制输入回路的电场效应来控制输出回路电流的一种半导体器件。由于它仅靠半导体中的多数载流子导电,又称单极型晶体管。

四、中断:

EXTI 可以监测指定 GPIO 口的电平信号,当其指定的 GPIO 口产生电平变化时, EXTI 将立即向 NVIC 发出中断申请,经过 NVIC 裁决后即可中断 CPU 主程序,使 CPU 执行 EXTI 对应的中断程序(如PA0和PB0不能同时使用)
支持的触发方式:上升沿 / 下降沿 / 双边沿 / 软件触发
支持的 GPIO 口:所有 GPIO 口,但相同的 Pin不能同时触发中断
触发响应方式:中断响应 / 事件响应

 

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是运行内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值