P5 GPIO输出
·带FT的引脚可容忍5v电压
·所有的GPIO都是在APB2外设总线上
·每个GPIO总共有16个引脚,从0到15
·32是32位单片机,寄存器有32位,但只有16个端口,所以只有低16位有端口
下图为GPIO基本结构:
·以下面GPIO电路图为例,左三为寄存器,中间为驱动器,右边为某一个端口的的IO口的引脚。同时,整体分为两个部分,上面是输入部分,下面是输出部分
·8种工作模式(PS:详细参考手册)
1.浮空输入
2.上拉输入
3.下拉输入
4.模拟输入:一般时候用不到
5.开漏数入:高电平时呈现高阻态,没驱动能力
6.推挽输入
7.复用开漏输出
8.复用推挽输出
P6LED闪烁&LED流水灯&蜂鸣器
P13 TIM定时中断
·中断源:对于外部中断来说,可以是引脚发生了电平跳变;对于定时器来说,可以是定时的时间到了;对于串口通信来说,可以是接收到了数据。
·中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。
·中断嵌套:(中断程序再次中断,二次中断现象)当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。
·响应优先级和抢占优先级(我的理解是):当程序1运行完后,响应优先级高的即使没排队,也可以直接运行;当程序1正在运行时,可以不等程序1运行完,抢占优先级高的可以让程序1靠边,优先运行,优先值越小,优先级更高。
·AFIO
AFIO主要完成两个任务:复用功能引脚重映射(就是最开始提到的引脚定义表,当想把默认复用功能换到重定义功能时,就是用AFIO来完成的,这也是AFIO的一大主要功能)、中断引脚选择。
·EXTIx是外部中断对应的中断资源
工作原理: EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序。
触发方式:(引脚电平的变化类型)上升沿/下降沿/双边沿/软件触发(程序执行代码就能触发中断)。
支持的GPIO口(外部中断引脚):所有GPIO口都能触发中断,但相同的Pin不能同时触发中断(比如PA0和PB0不能同时使用,智能选一个作为中断引脚;所以如果有多个中断引脚要选择不同的pin引脚,比如PA0和PA1、PB3就可以)
·NVIC就是STM32用来管理中断,分配优先级的,其中断优先级共有16个等级
P14 定时器中断&定时器外部时钟
·操作步骤:
(1)RCC时钟中断开始
(2)选择内部时钟源
(3)配置时机单元
(4)配置输出中断控制,允许中断输出到NVIC
(5)配置NVIC,并配置优先级
(6)运行控制-使能计数器
(7)定时器中断函数
·中断输出:ITConfig
·TIM2~7是APB1的外设时钟
·选择内部时钟,则默认是使用内部函数,可以不配置
计数器溢出频率:
CK_CNT_OV = CK_CNT / (ARR + 1)
= CK_PSC / (PSC + 1) / (ARR + 1)
·PSC(Prescaler,预分频器值):它用于对输入时钟(CK_PSC)进行分频。通过设置PSC的值,可以降低输入时钟的频率,其计算公式为经过预分频后的时钟CK_CNT = CK_PSC / (PSC + 1)。例如,如果输入时钟CK_PSC是100MHz,设置PSC为9,那么CK_CNT的频率就是100MHz / (9 + 1)=10MHz。
·ARR(Auto - Reload Register,自动重装载寄存器值):决定了计数器的计数上限。当计数器的值达到ARR所设定的值后,计数器会重新从0开始计数,并产生相应的溢出事件,这用于确定计数器的周期,从而影响溢出频率。例如,在定时器应用中,如果ARR设置为999,计数器从0开始计数,计到999后就会溢出重置。
·CK_CNT:这是经过预分频后的时钟信号用于驱动计数器计数的时钟频率。计数器在这个时钟的驱动下进行计数操作,每来一个 CK_CNT 时钟脉冲,计数器的值就会加1。
·CK_CNT_OV:这是计数器的溢出频率。当计数器计数到自动重装载值(由 ARR 决定)时就会产生溢出, CK_CNT_OV 表示这种溢出情况发生的频率,即单位时间内计数器溢出的次数。
P18 输入捕获模式测频率&PWMI模式测频率占空比
· PWM频率=更新频率=72M/(PSC+1)/(ARR+1),占空比=CCR/(ARR+1),所以通过ARR调节频率,会影响占空比,而通过PSC调节频率不影响
·TIM_PrescalerConfig:单独写入PSC的函数
·IC捕获的初始化:
(1)RCC开启时钟,把GPIO和TIM的时钟打开
(2)GPIO初始化,把GPIO配置成输入模式(上拉或浮空)
(3)配置时机单元,让CNT计数器在内部时钟的驱动下自增运行
(4)配置输入捕获单元
(5)选择从模式的触发源
(6)选择触发之后的操作
·TIM_SelectInputTrigger:选择输入触发源TRGI(对应上图第二个模块)
·TIM_SelectOutputTrigger:选择输出触发源TRGO(主模式的触发源)
·TIM_SelectSlaveMode:选择从模式
标签:CK,引脚,中断,PSC,白江,stm32,科大,GPIO,时钟 From: https://blog.csdn.net/2401_86555720/article/details/143336394