当前位置: 首页 > news >正文

没网站做推广营销软件商城

没网站做推广,营销软件商城,wordpress版权代码,企业做网站建设嵌入式开发–STM32G431RBTx-定时器中断流水灯 定时器工作原理 如图有反映stm32g431的定时器资源。 共10个定时器 定时器定时器类型个数TIM6,7基本定时器2TIM2,3,4全功能通用定时器3TIM15,16,17通用定时器(只有1或2个…

嵌入式开发–STM32G431RBTx-定时器中断流水灯

定时器工作原理

image-20240306221155182

如图有反映stm32g431的定时器资源。

共10个定时器

定时器定时器类型个数
TIM6,7基本定时器2
TIM2,3,4全功能通用定时器3
TIM15,16,17通用定时器(只有1或2个通道)3
TIM1,8高级控制定时器2
image-20240320163019569
  • 当APB1/2分频系数为1时,给定时器的时钟为X1
  • 当APB1/2分频系数不为1时,给定时器时钟需X2

基本定时功能,当累加的时钟脉冲数超过预定值时,能触发中断或者触发DMA请求。

是专门用于驱动数模转换器(DAC)

基本定时器TIM6/7内部结构图

image-20240320162924796
  • 核心功能是控制CK_INT时钟是否可以正常传输到PSC预分频器内
  • 当更新事件发生的时候,重装载寄存器的数值才传递到影子寄存器里。影子寄存器是真正起作用的寄存器。当使用定时器过程中,如果不修改这个寄存器,就不涉及这个问题。
【寄存器组成】

计数器寄存器(TIMx_CNT)

预分频寄存器(TIMx_PSC)

自动重装载寄存器(TIMx_ARR)

这三个寄存器都是16位有效数字,可设置的值为0~65535。

【预分频器】
CK_CNT=CK_PSC/(PSC[15:0]+1)
【计数过程】

每来一个CK_CNT脉冲,TIMx_CNT值就加1,当TIMx_CNT值与TIMx_ARR的设定值相等时就自动生成更新事件(也可以产生DMA请求、产生中断信号或者触发DAC同步电路),并且TIMx_CNT自动清零,然后重新开始计数,不断重复上述过程。因此我们只要设定TIMx_PSC和TIMx_ARR这两个寄存器的值就可以控制事件生成时间。对应的就是程序中定时器预分频设置(斜率)和定时器周期。

基本定时器TIM6/7时钟和基本信号

image-20240320173541116

配置定时器

设定TIM6定时器

image-20240320174021480

设定系数

image-20240320174808589

第一个是分频系数(Prescaler)

第二个是周期计数值,按照分频后的时间进行计数(Counter Period)

80M的晶振除以8000,得到的工作频率为80 000 000/8 000=10 000

计算到ARR,如果是1s,就让ARR设置为10 000-1

如此频率乘周期即为时间,即为一次中断触发的时间为1s

使用中断

image-20240320174839457

关于按键中断的实现

	struct keys key[4]={0,0,0};	if(htim->Instance==TIM3){key[0].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0);key[1].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1);key[2].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2);key[3].key_sta=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);}

这段代码是一个中断回调函数,用于处理定时器 TIM3 的中断事件。代码中包含一个名为 key 的结构体数组,用于记录按键的状态。

在函数体中,首先通过读取 GPIO 引脚的状态,将按键的状态存储到 key 数组中的相应位置。其中,key[i].key_sta 表示第 i 个按键的状态。

接下来,使用一个循环遍历 key 数组的每个元素,对每个按键的状态进行判断和处理。

	for(int i=0;i<4;i++){switch (key[i].judge_sta){case 0:  //{if(key[i].key_sta==0) key[i].judge_sta=1;}break;case 1:{if(key[i].key_sta==0){key[i].judge_sta=2;key[i].single_flag=1;}else key[i].judge_sta=0;}break;case 2:{if(key[i].key_sta==1){key[i].judge_sta=0;						}}break;	}		}

switch 语句中,根据 key[i].judge_sta 的值来确定需要执行的操作。key[i].judge_sta 表示按键的判断状态。

key[i].judge_sta的值为 0 时,表示按键处于初始状态。

  • 如果按键的状态为按下(key[i].key_sta 等于 0),则将 key[i].judge_sta 的值设为 1,表示按键已按下。

key[i].judge_sta的值为 1 时,表示按键已按下。

  • 如果按键的状态仍然为按下,维持 key[i].judge_sta 的值为 1。
  • 如果按键的状态变为松开(key[i].key_sta 等于 1),则将 key[i].judge_sta 的值设为 2,表示按键已松开,并将 key[i].single_flag 的值设为 1,表示按键被单击。

key[i].judge_sta的值为 2 时,表示按键已松开。

  • 如果按键的状态变为按下,将 key[i].judge_sta 的值设为 0,表示按键已按下。

功能实现

stm32g4xx_it.c文件中TIM6_DAC_IRQHandler函数下添加如下内容。

void TIM6_DAC_IRQHandler(void)
{HAL_TIM_IRQHandler(&htim6);LED_Disp(ledFlag);ledFlag = !ledFlag;}

即可实现LED在一秒钟亮灭交替效果

http://www.shuangfujiaoyu.com/news/20948.html

相关文章:

  • 企业网站建设合作协议范文seo搜索引擎优化关键词
  • 找别人做网站注意问题seo工具包括
  • 安通建设有限公司网站谷歌搜索网页版入口
  • 网站备案用户名广西南宁做网站的公司
  • 怎么 给自己的网站做优化呢如何优化网站推广
  • wordpress主题替换四川seo排名
  • 网站建设学什么的怎么做私人网站
  • 工信部的网站备案网络维护培训班
  • 哈尔滨哪里做网站好搜客通
  • 网站在线客服如何做seo公司杭州
  • php WordPress开发老鬼seo
  • 郑州网站建设哪一家好网络推广竞价是什么
  • 做博客的网站最权威的排行榜网站
  • 自做购物网站多少钱域名注册信息怎么查
  • 新蔡哪有做网站建设的seo对网店推广的作用
  • 信息发布的网站怎么做网络营销是什么课程
  • 简洁个人博客网站模板网站推广费用一般多少钱
  • 河北廊坊网站建设google play三件套
  • 什么网站可以做家禽交易品牌营销策划机构
  • 首页%3e新闻%3e正文 网站怎么做新手怎么学网络运营
  • 贵州国龙翔建设有限公司网站竞价推广账户竞价托管收费
  • 建设网站的重要性一键免费建站
  • 简述一个商务网站建设的步骤站长工具seo综合查询腾讯
  • vba可做网站吗品牌seo主要做什么
  • 手机网站大全1十大广告公司排名
  • 有哪个网站可以学做吃的培训机构有哪些
  • 南京英文网站制作郑州网站推广效果
  • 郴州网站优化文娱热搜榜
  • 做网站的编程语言组合网络营销推广方案论文
  • 普通网站建设上海今日头条新闻