首页 > 其他分享 >EXTI中断、TIM定时器

EXTI中断、TIM定时器

时间:2024-01-25 15:33:32浏览次数:25  
标签:输出 CNT 定时器 优先级 中断 TIM EXTI

一.中断系统

  • 1.中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。

  • 2.中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。

  • 3.中断嵌套:当一个程序正在运行时,又有新的更高优先级的中断源申请终端,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回。

二.中断执行流程

三.STM32外设中断

四.NVIC基本结构

其中NVIC只管分配中断优先级,反馈给CPU

五.优先级分组


优先级的值越小,优先级就越高。

抢占优先级可以打断CPU正在的操作,优先处理
响应优先级可以插队,排在NVIC的优先级1的位置上。

六.EXTI

事件响应不会触发中断,会触发外设操作

七.EXTI基本结构

AFIO:在PA0,PB0,PC0中选择其中一个,PA1,PB1,PC1中选择一个······共16个连接到EXTI,即相同的Pin不能同时触发中断

八.AFIO复用IO口

九.EXTI框图


此为或门,可由多个输入,仅有一个输出,输入端只要有一个高电平,则输出高电平


此为与门,可由多个输入,仅有一个输出,输入端只要有一个低电平,则输出低电平

十.TIM简介

十一.TIM类型

APB2总线性能更高

十二.基本定时器

PSC预分频器   写0,则为不分频或者1分频。
             写1,那就是2分频。输出频率=输入频率/2=36MHz
             写2,那就是3分频,输出频率=输入频率/3=24MHz
             ...

十三.基本定时器框图

自动重装寄存器存储写入的记数目标,CNT计数器不断自增,当计数值=自动重装值时,计时时间到,产生中断信号,清零计数器

十四.通用定时器框图

基本定时器仅支持向上自增这一种计数模式。
通用定时器支持:
1.向上自增:从0自增至自动重装值后中断,清零
2.向下自减:从自动重装值减少至0后中断,恢复自动重装值
3.中央对齐:从0自增至重装值,中断,再从重装值减少到0,中断

外部时钟模式1的输入可以是ETR引脚、其他定时器、CH1引脚的边沿、CH1引脚和CH2引脚。

十五.高级定时器框图


重复次数计数器:每隔N个周期再更新一次

十六.定时中断基本结构

十七.预分频器时序

CNT_EN:高电平计数器运行,低电平停止
预分频控制寄存器:防止中途更改数值造成错误
重装计数值:FC

十八.计数器时序

十九.输出比较简介

同样的,IC(Input Capture):输入捕获
CCR(Capture/Compare Register)捕获/比较寄存器
框图如下:

在输出比较时,这块电路会比较CNT和CCR的值,CNT是计数自增,当CNT大于、小于、等于CCR时,OC输出会对应的置1,置0,置1,置0.

二十.PWM简介


LED闪烁频率足够快,可以约为发出不同的亮度(视觉暂留)
占空比越大,等效的模拟电压越趋近于高电平。
占空比越小,等效的模拟电压越趋近于低电平。

二十一.输出比较通道


模式由TIMx_CCMR1配置

二十二.PWM基本结构


蓝色线:CNT 黄色线:ARR
红色线:CCR
通过调整CCR设置的值,来控制输出的占空比

二十三.PWM参数计算

标签:输出,CNT,定时器,优先级,中断,TIM,EXTI
From: https://www.cnblogs.com/acloudyskye/p/17968155

相关文章

  • Electron 解决 connect ETIMEDOUT 或 sill idealTree buildDeps
    参考https://blog.csdn.net/Johanna51/article/details/123360477https://www.electronjs.org/zh/docs/latest/tutorial/installationhttps://cloud.tencent.com/developer/article/1781066环境环境版本说明Windows10nodev20.11.0npm10.2.4Windows......
  • 记录--你敢信?比 setTimeout 还快 80 倍的定时器
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助起因很多人都知道,setTimeout是有最小延迟时间的,根据MDN文档setTimeout:实际延时比设定值更久的原因:最小延迟时间中所说:在浏览器中,setTimeout()/setInterval()的每调用一次定时器的最小间隔是4ms,这通常是由于......
  • 脚本exlpain结果与optimizer_trace结果不一致
    先说结论:表数据量太少,使用索引的效率不如全表扫描。表信息:CREATETABLE`w_map_cell`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键',`shelf_id`bigint(11)DEFAULTNULLCOMMENT'货架id',`cell_no`varchar(50)DEFAULTNULLCOMMENT'储位编号',`cell_name......
  • ChatGPT无法登录报错something went wrong. please make sure your device's date and
    这两天Android在登陆ChatGPT的时候,出现错误:somethingwentwrong.pleasemakesureyourdevice'sdateandtimearesetproperly如下图:这个问题就出现的非常蹊跷,于是我在网上搜索了一圈,很多的教程都指向节点网络问题,但是我的Hostease网络确定没有问题,因此这个问题就快无解了,正......
  • 后仿 Timing violation 相关
    后仿出现的Violation那些是可以waive掉的                                            需要设计确认是否可以waive掉时                   ......
  • k8s中controller-runtime并发Reconcile分析
    §0x01起因开发控制器时,团队内一直在讨论是否需要为单个控制器对象添加并发控制(即加锁),最终把controller-runtime框架中并发数改为1,同时启用了k8s的leaderelection机制保证只有单实例来规避并发的可能。这种做法其实是有问题的,没有搞清楚controller-runtime框架本身是......
  • 神经网络优化篇:详解局部最优的问题(The problem of local optima)
    局部最优的问题在深度学习研究早期,人们总是担心优化算法会困在极差的局部最优,不过随着深度学习理论不断发展,对局部最优的理解也发生了改变。向展示一下现在怎么看待局部最优以及深度学习中的优化问题。这是曾经人们在想到局部最优时脑海里会出现的图,也许想优化一些参数,把它们称......
  • 0ptimizing tail recursion
    尾递归(TailRecursion)是一种特殊形式的递归,其特点是递归调用是函数的最后一个操作。在尾递归中,递归调用的返回值不需要进行额外的操作,而是直接返回给调用者。这种特殊的结构使得编译器有机会对递归调用进行优化,称为尾递归优化。尾递归函数的特征是,在递归调用中,没有后续的计算步骤......
  • onnxruntime输出模型中间层的结果
    defget_layer_output(model,image):ori_output=copy.deepcopy(model.graph.output)fornodeinmodel.graph.node:foroutputinnode.output:model.graph.output.extend([onnx.ValueInfoProto(......
  • hivesql报错:java.net.SocketTimeoutException: Read timed out
    场景:在dolphin里面执行hivesql脚本,报错java.net.SocketTimeoutException:Readtimedout解决方式:hive.metastore.client.socket.timeout=1000s 扩展:"Hive报Readtimedout"错误可能也与YARN的资源限制有关。可以通过增加YARN的配置参数来解决此错误。<property><name......