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

嵌入式蓝桥杯学习5 定时中断实现按键

Cubemx配置

打开cubemx。

前面的配置与前文一样,这里主要配置基本定时器的定时功能。

1.在Timer中点击TIM6,勾选activated。配置Parameter Settings中的预分频器(PSC)和计数器(auto-reload Register)

补充:

定时器工作频率=内部总线频率/PSC+1

定时频率=定时器工作频率/Period+1  =内部总线频率/((PSC+1)*(Period+1 ))

示例:总线频率80MHz,预分频80-1,重装载1000-1

定时频率= 80M/80*1000=1khz 周期为1ms

2.配置PSC为80-1,计数器为1000-1。

3.将自动重装载(auto-reload )设置为使能(Enable)。

4.点击NVIC Settings,勾选中断使能。

点击GENERATE CODE.  

配置keli

将main.c中的tim.h添加到my_main.h文件中。

1.使能TIM6中断

HAL_TIM_Base_Start_IT(&htim6)

用于启动定时器基本功能并且开启定时器中断的函数。其主要目的是让指定的定时器开始按照预先配置好的参数(比如计数模式、预分频值、自动重装载值等)进行计数工作,并且当定时器计数达到相应条件(例如溢出等情况)时,会触发对应的定时器中断,进而可以在中断服务函数中执行相应的处理代码。

2.编写中断回调函数

点击stm32g4××_hal_tim.h,在大概2529行的位置找到中断回调函数进行复制。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);

粘贴到my_main.c,用于配置定时器中断。

示例:利用按键函数测试定时中断是否有效。

点开cubemx,在上面配置的基础上,点击System Core中的NVIC,将Time Base优先级设置为4,TIM6 global interrupt优先级设置为5。点击GENERATE CODE.  

my_main.c

#include "my_main.h"
uint8_t led_sta=0x10;
char text[30];
void LED_Disp(uint8_t dsLED)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);//所有LED熄灭(l小写)HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);//左移8位:控制C8-15引脚,值为1的点亮HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//开锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关锁存器
}
void setup()
{HAL_TIM_Base_Start_IT(&htim6);LED_Disp(0x00);//关掉所有LEDLCD_Init();//LCD初始化LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);
}void loop()
{/*     LCD演示     */sprintf(text,"    number:%x  ",led_sta);LCD_DisplayStringLine(Line8,(uint8_t *)text);//局部刷新LCD_SetBackColor(Yellow);sprintf(text,"    T:%d                ",30);LCD_DisplayStringLine(Line5,(uint8_t *)text);//局部刷新LCD_SetBackColor(Black);sprintf(text,"    X:A01  ");LCD_DisplayStringLine(Line6,(uint8_t *)text);//局部刷新
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{/*     按键操作演示     */if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==GPIO_PIN_RESET){HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==GPIO_PIN_RESET){led_sta=(led_sta&0xfe)|0x01;led_sta=(led_sta&0xfd)|0x00;LED_Disp(led_sta);			}}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==GPIO_PIN_RESET){HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==GPIO_PIN_RESET){led_sta=(led_sta&0xfd)|0x02;led_sta=(led_sta&0xfe)|0x00;LED_Disp(led_sta);	//180°翻转屏幕LCD_Clear(Black);REG_932X_Init1();}}
}

相关文章:

嵌入式蓝桥杯学习5 定时中断实现按键

Cubemx配置 打开cubemx。 前面的配置与前文一样&#xff0c;这里主要配置基本定时器的定时功能。 1.在Timer中点击TIM6&#xff0c;勾选activated。配置Parameter Settings中的预分频器&#xff08;PSC&#xff09;和计数器&#xff08;auto-reload Register&#xff09; 补…...

【Java】类似王者荣耀游戏

r77683962/WangZheYouDianRongYao 运行效果图&#xff1a; 类似王者荣耀游戏运行效果图_哔哩哔哩_bilibili...

C++<基本>:union是没有构造函数和析构函数的

今天发现当我在union中包含了多个结构体时&#xff0c;结构体有默认构造函数时&#xff0c;编译报错。 问题点&#xff1a; union不支持构造函数和析构函数union中的元素本身也是不支持构造函数和析构函数的。包含union的结构体也不支持构造函数和析构函数。 出错代码如下&a…...

SQL中IN和NOT操作符的用法

1. IN操作符&#xff08;布尔逻辑&#xff09; 在SQL中&#xff0c;IN 是一个用于检查某个字段值是否包含在给定的多个可能值中的布尔操作符。它经常与条件表达式一起使用&#xff0c;通常出现在WHERE子句中。 用法&#xff1a; IN操作符用来确定某个字段的值是否存在于给定…...

C++平常学习用的

4.1 友元函数 4.2 友元类 5.2 类模板 7.2 虚函数dynamic_cast运算 7.2 纯虚函数和抽象类...

JAVA |日常开发中Servlet详解

JAVA &#xff5c;日常开发中Servlet详解 前言一、Servlet 概述1.1 定义1.2 历史背景 二、Servlet 的生命周期2.1 加载和实例化2.2 初始化&#xff08;init 方法&#xff09;2.3 服务&#xff08;service 方法&#xff09;2.4 销毁&#xff08;destroy 方法&#xff09; 三、Se…...

QT实战--QTreeWidget实现两种行颜色+QListWidget样式

本文主要介绍了QTreeWidget实现两种行颜色、点击打开父节点以及设置父子节点之间距离,同时附带介绍了QListWidget样式 树效果图: 列表效果图: 1.树样式的实现 1)使用代码: m_pLeftTreeWidget = new QTreeWidget(this);m_pLeftTreeWidget->setObjectName("suolue_t…...

RPA在IT运维中的实践:自动化监控与维护

一、引言 1. IT运维面临的挑战与RPA的机遇 在IT运维领域&#xff0c;日常的监控、维护和故障响应等工作占据了大量的时间和资源。随着技术的发展&#xff0c;RPA技术提供了自动化这些重复性任务的可能性&#xff0c;从而释放IT团队的潜力&#xff0c;让他们能够专注于更复杂和…...

C# 设置方法执行超时,则执行下一个方法

最近在开发过程中遇到了一个问题&#xff0c;在进行通讯连接时&#xff0c;如果没有连接的话会延时几十秒&#xff0c;而且还设置不了连接超时时间&#xff0c;于是我就想着有没有一种可以判断这个方法的执行时间超过多少秒&#xff0c;就跳出执行其他方法&#xff0c;经过大量…...

【iOS】UIImagePickerController

【iOS】UIImagePickerController 前言 笔者简单学习了iOS开发如何调用本地的一个相册的内容&#xff0c;下面简单介绍一下相关内容。 介绍 UIImagePickerController是iOS平台上的一个类&#xff0c;用于在应用程序中访问设备的照片库、相机和视频录制功能。它提供了一个用户…...

现代企业营销模式创新:链动 2+1 模式 AI 智能名片商城小程序的应用与价值

摘要&#xff1a;本文旨在探讨现代企业面临的客户环境变化以及相应的营销模式变革需求&#xff0c;重点分析链动 21 模式 AI 智能名片商城小程序在满足现代企业营销沟通即时性、精准性、社会性和方便性要求方面的作用&#xff0c;并阐述其对企业在未来市场竞争中取得胜利的重要…...

springboot+Loki+Loki4j+Grafana搭建轻量级日志系统

文章目录 前言一、日志组件介绍 1.1 Loki组件1.2 Loki4j组件1.3 Grafana 二、组件下载安装运行 Loki下载安装运行Grafana下载安装运行 三、创建springboot项目总结 前言 日志在任何一个web应用中都是不可忽视的存在&#xff0c;它已经成为大部分系统的标准组成部分。搭建日志…...

服务器守护进程化

目录 一、守护进程的定义与特点 1、定义 2、特点 二、守护进程的原理 三、守护进程与会话&#xff08;Session&#xff09;的关系 四、C实现守护进程 守护进程&#xff08;Daemon Process&#xff09;是一个在后台运行、通常不与用户直接交互的进程。守护进程是操作系统中…...

灵途科技亮相2024世界传感器大会 分享光纤光源技术突破

12月1日至2日&#xff0c;2024世界传感器大会&#xff08;WSS&#xff09;在郑州国际会展中心隆重举办&#xff0c;泛自动驾驶领域光电感知专家灵途科技受邀参加“光纤传感器与激光雷达”分论坛&#xff0c;并在大会上带来《激光雷达用一体化光纤光源》专题演讲&#xff0c;同与…...

day35—蓝桥杯2024年第16届校赛模拟第二期-T4(最小花费)

【问题描述】 小蓝有一个整数&#xff0c;初始值为 1 &#xff0c;他可以花费一些代价对这个整数进行变换。 小蓝可以花费 1 的代价将整数增加 1 。 小蓝可以花费 3 的代价将整数增加一个值&#xff0c;这个值是整数的数位中最大的那个&#xff08;1 到 9&#xff09;。 小蓝可…...

【CSS in Depth 2 精译_068】11.2 颜色的定义(下):CSS 中的各种颜色表示法简介

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 ✔️ 11.2.2.…...

游戏引擎学习第38天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾上次的内容。 我们之前讨论了将精灵放在屏幕上&#xff0c;但颜色错误的问题。问题最终查明是因为使用了一个调整工具&#xff0c;导致文件的字节顺序发生了变化。重新运行“image magic”工具对一些大图像进行重新处理后&am…...

P1223 排队接水(贪心)

题目描述 有 &#x1d45b;个人在一个水龙头前排队接水&#xff0c;假如每个人接水的时间为 &#x1d447;&#x1d456;&#xff0c;请编程找出这 &#x1d45b; 个人排队的一种顺序&#xff0c;使得 &#x1d45b;个人的平均等待时间最小。 输入格式 第一行为一个整数 &am…...

关于springBoot+vue项目中配置SSL证书问题

前端可以通过https进行访问 1.前端在访问后端接口时&#xff0c;使用https进行访问&#xff0c;在request.js配置文件中&#xff0c;这个文件是配置axios的基本请求的&#xff0c;在基础请求地址中改为https方式 2.需要在Linux中的nginx中配置ssl证书&#xff0c;具体请参考&…...

GUI的最终选择:Tkinter

Tkinter是Python默认的GUI库&#xff0c;因此使用时直接导入即可&#xff1a;import tkinter 17.1 Tkinter之初体验 代码分析&#xff1a; tkinter.mainloop()通常是程序的最后一行代码&#xff0c;执行后程序进入主事件循环。 17.2 进阶版本 将代码封装成类&#xff1a; 运…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析

MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录&#xff0c;这个目录下存放着许多可执行文件。与其他系统的可执行文件类似&#xff0c;这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中&#xff0c;用…...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

简约商务通用宣传年终总结12套PPT模版分享

IOS风格企业宣传PPT模版&#xff0c;年终工作总结PPT模版&#xff0c;简约精致扁平化商务通用动画PPT模版&#xff0c;素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...