首页 > 其他分享 >STM32单片机学习记录(11.22)

STM32单片机学习记录(11.22)

时间:2024-11-22 19:43:52浏览次数:3  
标签:NVIC 函数 TIM 中断 11.22 STM32 单片机 GPIO EXTI

一、STM32

        5.2 - 对射式红外传感器计次&旋转编码器计次

                1.Keil 5程序步骤与注意事项:

                (1)配置头文件&初始化函数;               

                (2)外部中断的配置:配置RCC,打开外设时钟 —— 配置GPIO,打开端口为输入模式 —— 配置AFIO,选择所用的GPIO,连接至EXTI —— 配置EXTI,选择边沿触发方式,以及触发响应方式 —— 配置NVIC,选择优先级 —— 中断信号通过NVIC进入CPU,执行中断程序;

                (3)内核外设无需开启时钟!

                2.初始化GPIOX:

                (1)GPIO_MODE可选择浮空、上拉或下拉输入模式;

                (2)GPIO_PIN根据面包板上的电路接口来输入;

                (3)GPIO_SPEED无特殊要求常见使用50MHz。

                注:关于GPIO详细介绍可浏览“STM32单片机学习记录(11.10)”

                3.配置AFIO

                (1)GPIO_AFIODeInit 函数:用于清楚原AFIO外设;

                (2)GPIO_PinLockConfig 函数:用于锁定GPIO配置,防止意外更改;

                (3)GPIO_EventOutputConfigGPIO_EventOutputCmd 函数:用于配置AFIO事件输出功能;

                (4)GPIO_PinRemapConfig 函数:用于进行引脚重映射,(映射方式,状态);

                (5)GPIO_EXTILineConfig 函数:用于配置AFIO数据选择器,选择中断引脚;

                (6)GPlO_ETH_MedialnterfaceConfig 函数:以太网外设。

                (7)以上以GPIO为开头的函数控制的是AFIO中断。

                4.配置EXTI

                (1)EXTI_DeInit & EXTI_Init & EXTI_StructInit 函数:用于初始化EXTI,用法与GPIO初始化一致;

                (2)EXTI_GenerateSWInterrupt 函数:用于软件触发外部中断,参数给软件触发中段线(若只需外部引脚触发,则无需该函数);

                (3)FlagStatus EXTI_GetFlagStatus & EXTI_ClearFlag 函数:读写寄存器函数,分别用于查询和清楚寄存器内数据(用于主程序);

                (4)ITStatus_EXTI_GetITStatus & EXTI_ClearITPendingBit 函数:与上面两个函数类似,但只用于读写与中断有关的标志位并做出判断(用于中断函数)。

                5.关于EXTI部分主程序:

                (1)先定义EXTI_InitStructure变量名,接下来对其结构体变量进行定义;

                (2)EXTI_Line 变量:配置所需中断线;

                (3)EXTI_LineCmd 变量:指定选择的中断线的新状态(EnableDisable);

                (4)EXTI_Mode 变量:指定外部中断线格式(中断模式Interrupt或时间模式Event);

                (5)EXTI_Trigger 变量:指定触发方式(上升沿Rising、下降沿Falling或都触发Rising_Falling)。

                6.配置NVIC

                (1)NVIC_PriorityGroupConfig 函数:用于分组中断;

                (2)NVIC_Init 函数:根据结构体内指定的参数初始化NVIC

                (3)NVIC_SetVectorTable 函数:设置中断向量表;

                (4)NVIC_SystemLPConfig 函数:系统低功耗设置。

                7.最后找到对应的中断函数且自行构造计数变量函数即可。

                8.切记在主函数和中断函数中同时调用OLED!可多使用变量和标志位,减少代码间耦合性,让各部分代码互相独立,让程序更加清晰。

        6.1 - TIM定时中断简介

                1.TIMER定时器:根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型,可以对输入的时钟进行计数,并在计数值达到设定值时触发中断,不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。

                2.定时中断基本结构:

        6.2 - 定时器定时中断&定时器外部中断

                1.程序步骤:

                (1)RCC开启时钟——定时器基准时钟与外设时钟都会开启;

                (2)选择时基单元时钟源(定时中断选择内部时钟源);

                (3)配置时基单元(包括PSC预分频器、CNT计数器、ARR自动重装器);

                (4)配置输出中断控制,允许更新中断输出到NVIC

                (5)配置NVIC,在NVIC中打开定时器中断通道,并分配一个优先级;

                (6)运行控制,使能计数器,编写定时器中断函数。

                2.关于TIM的函数

                (1)TIM_TimeBaseInit 函数:时基单元初始化,用于配置时基单元;

                (2)TIM_TimeBaseStructInit 函数:将结构体变量赋予默认值;

                (3)TIM_Cmd 函数:计数器,用于运行控制;

                (4)TIM_ITConfig 函数:使能中断输出信号,即为中断输出控制;

                (5)TIM_XClockConfig 函数:选择内部、ITRxETR以及外部1、2时钟或不选择时钟;

                (6)TIM_CounterModeConfig 函数:改变计数器计数模式;

                (7)TIM_ARRPreloadConfig 函数:自动重装器预装功能配置;

                以上为基础函数,更多相关函数可自行浏览函数库。

                3.完成主程序后,别忘了用TIM_ClearlTPendingBit清除标志位!

                4.用TIM_ClearFlag函数避免初始化后中断。

        6.3 - TIM输出比较

                1.OC(Output Compare)输出比较:输出比较可以通过比较CNT与CCR(捕获/比较寄存器)寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形,每个高级定时器和通用定时器都拥有4个输出比较通道,前3个通道额外拥有死区生成和互补输出的功能。

                2.PWM(Pulse Width Modulation)脉冲宽度:调制在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速,LED亮度等领域。

                3.PWM参数:频率=1/Ts,占空比=Ton/Ts,分辨率=占空比变化步距。

                4.当CNT>=CCR时,输出模式控制器就会改变电平。当极性选择输入0时,电平不改变;输入1时,电平翻转。

                5.输出比较模式如下图:

                6.关于PWM的数值计算:PWM频率:Freq=CK PSC/(PSC+1)/(ARR + 1);PWM占空比:Duty=CCR/(ARR + 1);PWM分辨率:Reso=1/(ARR+1)。

                7.舵机简介:舵机是一种根据输入PWM信号占空比来控制输出角度的装置,输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms。

                8.直流电机及驱动简介:直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作。常见的TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向。

标签:NVIC,函数,TIM,中断,11.22,STM32,单片机,GPIO,EXTI
From: https://blog.csdn.net/2402_86234774/article/details/143931934

相关文章

  • [考试记录] 2024.11.22 noip模拟赛19
    T1镜的绮想(mirror)考虑维护中点\(y\)坐标数量,\(mid_y=(a_y+b_y)/2\),不过不用除。枚举所有相同\(x\)坐标点对即可。#include<bits/stdc++.h>usingnamespacestd;constexprintN=5e3+5,MX=2e6+5;inta[N<<1],pos[N<<1],cnt,ans,val[MX<<1];structno......
  • 2024.11.22 考试总结
    赛时T1画了画图,知道最多转两下,对称三次,这六种情况取最优就行了。T2想从最高位贪心,那一定有一个串是\(fs(1,n)\),考虑继续贪心,让第一串\(1\)后面那一串\(0\)尽量有\(1\)与之匹配,思路很清晰,但一开始写就写成了一坨,写写删删,交完10点多一点。T3,没什么想法,最后想回来写暴力,......
  • day07(单片机高级)继电器模块绘制
    目录继电器模块绘制原理图布局添加板框布线按tab修改线宽度布线换层泪滴铺铜铺铜的作用铺铜的使用规范添加丝印步骤总结继电器模块绘制到淘宝找一个继电器模块继电器模块的使用(超详细)_继电器模块工作原理-CSDN博客文章浏览阅读4.8w次,点赞116次,收藏464......
  • day05(单片机高级)PCB基础
    目录 PCB基础什么是PCB?PCB的作用?PCB的制作过程PCB板的层数PCB设计软件安装立创EDA                                        PCB基础什么是PCB?PCB的作用?PCB(PrintedCircuitBoard),中文名称为印制电路板,又称印刷电路板......
  • 11.22 CW 模拟赛 T2.通信
    算法显然的,我们可以先转化问题对于无向图上的\(n\)个点,点之间的边权就是\(\min(\text{图上的欧氏距离的平方和},v)\),求走完所有点时经过的最小边权和手玩样例看下有没有思路?显然的,对于\(50\rm{pts}\),状压可以解决考虑剩下的\(50\rm{pts}\),注意到我们......
  • EMC电磁兼容设计与测试案例分析(第3版)(11.22)
    EMC电磁兼容设计与测试案例分析(第3版)(11.22)EMC电磁兼容设计与测试案例:1、EMC共模电流不入地2、金属外壳可以更好接地、屏蔽线缆:单端/双端接地是否存在连接层导致双端失效3、电感频增而增;电容频增而减;串感、并荣;有概率发生谐振(点),应避开emc测试点4、浪涌与过压:低频、干扰......
  • 【51单片机】程序实验5&6.独立按键-矩阵按键
    主要参考学习资料:B站【普中官方】51单片机手把手教学视频前置知识:C语言单片机套装:普中STC51单片机开发板A4标准版套餐7码字不易,求点赞收藏加关注(´•ω•̥`)有问题欢迎评论区讨论~目录独立按键按键介绍实验5独立按键矩阵按键矩阵按键介绍实验6-1行列式扫描实......
  • 11.22 模拟赛
    前言大唐胜屎\(T1\)镜的绮想水签CODE#include<bits/stdc++.h>typedeflonglongll;usingnamespacestd;constintN=5e3+100;constintM=4e6+100;intn,m;structPoi{ intx,y;}a[N],b[N];intnum[M];signedmain(){ autoRet1=f......
  • 6.STM32之通信接口《精讲》之USART通信(PC串口与OLED交互)---多字节数据收发(数据包的模
    本节将串口收发HEX数据包(发送数据包很简单,主要还是关注一下如何接收数据包)在这里给大家介绍一下状态机的思想状态机模式(StateMachinePatern)是一种用于描述对象的行为软件设计模式,属于行为型设计模式。在状态机模式中,对象的行为取决于其内部状态,并且在不同的状态下,对象可......
  • STM32编程小工具FlyMcu和STLINK Utility 《通俗易懂》破解
    FlyMcu FlyMcu模拟仿真软件是一款用于STM32芯片ISP串口烧录程序的专用工具,免费,且较为非常容易下手,好用便捷。  注意:STM32芯片的ISP下载,只能使用串口1(USART1),对应的串口发送接收引脚PA9、PA10。不能使用其他串口来代替。   下载路径无偿分享内容如下,有STM32......