【stm32/CubeMX、HAL库】嵌入式实验六:定时器(1)|定时器中断

news2024/11/17 10:05:34

参考:

【【正点原子】手把手教你学STM32CubeIDE开发】 https://www.bilibili.com/video/BV1Wp42127Cx/?p=13&share_source=copy_web&vd_source=9332b8fc5ea8d349a54c3989f6189fd3

《嵌入式系统基础与实践》刘黎明等编著,第九章定时器。

实验内容

1、电子时钟设计。

时钟频率为 72Mhz,采用定时器 3。

(1)实现 1 秒延时,并控制 LED0 闪烁.

CubeMX配置(36000-1+1)*(2000-1+1)/72000000=1s:

 LED0:

回调函数:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance==htim3.Instance)
  {
		HAL_GPIO_TogglePin(GPIOF,LED0_Pin);
	}
	
}

 main函数里启动定时器中断计数:

  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim3);
  /* USER CODE END 2 */

(2)在数码管上显示时钟,格式为“12-00-00”,设置定时器 1 秒延时,并实时更新 时钟显示。

全局变量,用来存时分秒,中断不直接操作s数组,而是先存到三个变量中,再在主函数里拷贝,flag作为是否发生中断的标志

/* USER CODE BEGIN PV */
uint8_t hh=12,mm=0,ss=0;
uint8_t flag=0;
/* USER CODE END PV */

数码管显示部分基本上是从前面的实验搬过来,table段码表,s存放要显示的数字,writebyte函数把要显示的一位数字送到数码管(配置看:https://blog.csdn.net/qq_61814350/article/details/138093983?spm=1001.2014.3001.5502

):

uint8_t table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40 };//10表示'-'
uint8_t s[]={1,2,10,0,0,10,0,0};
void write_byte(uint8_t date){
    unsigned char i;
	for(i=0;i<8;i++){
	  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,(date>>(7-i))&0x01);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,1);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,0);
	}
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,1);
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,0);
 
}

回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance==htim3.Instance)
  {
		//HAL_GPIO_TogglePin(GPIOF,LED0_Pin);
		ss++;
		if(ss==60){
		ss=0;
		mm++;
		}
		if(mm==60){
		mm=0;
		hh++;
		}
		if(hh==24){
		hh=0;
		}
		
		flag=1;
		
	}
	
}

主函数 

  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		if(flag==1){
		s[7]=ss%10;
		s[6]=ss/10;
		s[4]=mm%10;
		s[3]=mm/10;
		s[1]=hh%10;
		s[0]=hh/10;
			
		flag=0;
		}
			
		
		
		for(int i=8;i<16;i++){
		write_byte(table[s[15-i]]);
		HAL_GPIO_WritePin(GPIOF,0x01<<i,0);
		HAL_Delay(1);
		HAL_GPIO_WritePin(GPIOF,0x01<<i,1);
		}
  }
  /* USER CODE END 3 */

(3)设置 KB1、KB2、KB3 分别对时钟的小时、分、秒进行调整(KB1 按下,小时+1, KB2 按下,分钟+1,KB3 按下,秒钟+1)

在上个实验里加上按键对应的外部中断事件。下是三个按键的部分配置

详见前面的按键中断实验的文章。 

回调函数:

void counter()
{
    
		if(ss==60){
		ss=0;
		mm++;
		}
		if(mm==60){
		mm=0;
		hh++;
		}
		if(hh==24){
		hh=0;
		}

}
	
	

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance==htim3.Instance)
  {
		//HAL_GPIO_TogglePin(GPIOF,LED0_Pin);
		ss++;
		counter();
		
		flag=1;
		
	}
	
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	HAL_Delay(10);//延时,用来消抿
	
  if(GPIO_Pin==GPIO_PIN_0) {
		
		if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_0)==RESET){
		 hh++;
		 counter();
		}
	   
	}
	else if(GPIO_Pin==GPIO_PIN_1) {
		if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_1)==RESET){
		mm++;
		 counter();
		}
	   
	} 
	else if(GPIO_Pin==GPIO_PIN_6) {
		if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_6)==RESET){
		ss++;
		 counter();
		}
	   
	}
	
	//HAL_Delay(100);
	flag=1;
	
}

 后面的实验下次再说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1712475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【VRIO模型】用战略模型找到你的「核心竞争力」

一个项目或企业要获得成功&#xff0c;其所拥有的资源和资源发挥的效能至关重要。那么&#xff0c;什么样的资源才能支撑项目发展的核心竞争力呢&#xff1f;VRIO是针对组织内部资源与能力&#xff0c;分析竞争优势和弱点的工具。 VRIO模型 VRIO模型是针对企业内部资源与能力…

LeetCode刷题之HOT100之三数之和

2024/5/29 天气真他妈好呀&#xff01;好天气让我舒畅&#xff0c;可惜俺今天把我养护了两三个月的栀子花花苞又整掉了一朵&#xff0c;呜呜呜&#xff01;看着它们一天天长大&#xff0c;花苞边由嫩绿泛白&#xff0c;结果被我不小心弄掉了&#xff0c;我是罪人。它们还想&…

SunoAI 智能创作歌曲神器的源码系统架构 前后端分离 附带完整的源代码包以及安装搭建教程

系统概述 SunoAI 智能创作歌曲神器的源码架构是基于先进的技术理念构建而成。前端采用了现代化的用户界面设计&#xff0c;为用户提供直观、友好的操作环境。后端则运用高效的算法和强大的处理能力&#xff0c;确保歌曲创作的准确性和高质量。 代码示例 系统特色功能模块 1.智…

Vue3 - 实现一个雨水滴落的动画效果

在 Vue 3 中实现一个雨水滴落的动画效果,可以使用 HTML5 的 <canvas> 元素和 JavaScript 来绘制和控制动画。 以下是一个实现雨水滴落效果的示例: 创建一个 Vue 3 项目 首先,确保你已经创建了一个 Vue 3 项目。如果还没有,可以使用 Vue CLI 来创建: vue create r…

如果不花钱,又担心钱存着贬值,怎么办?如果把大部分钱投入到赚钱的事上,特别是自己专业上,比如说我是十年的程序员,帮我分析投资?

如果你不想花钱&#xff0c;但又担心钱存着会贬值&#xff0c;有几个策略可以帮助你在不花费大量金钱的情况下保护你的资金价值&#xff1a; 高收益储蓄账户或货币市场账户&#xff1a; 选择一个高收益的储蓄账户或货币市场账户&#xff0c;这些账户通常比传统储蓄账户提供更高…

[ACL 2024 Main] StickerConv: 从零开始的多模态共情回复生成

文章目录 &#x1f4c3; Abstract&#x1f52d; Contributions&#x1f50d; Approach✨ Agent for StickerConv✨ StickerConv Dataset✨ PEGS✨ 多模态共情回复评价 &#x1f4ca; Experiments&#x1f4c4; Conclusion&#x1f310; 开源网址 Project Page: StickerConv Pro…

【云原生】kubernetes中Configmap原理解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

汽车IVI中控开发入门及进阶(二十一):DAB和FM 收音机

前言: 在过去的十年里,数字收音机对车载娱乐产生了重大影响。现在,几乎每辆新车都标配了这项技术,这也是我们60%以上的人收听收音机的方式。甚至有传言称,在不久的将来,将永久关闭调频发射机,使许多车载收音机过时。但一些相对年轻的汽车在工厂里仍然没有安装DAB,而且…

Linux共享内存创建和删除

最近项目中使用到了共享内存记录下 创建共享内存: 删除共享内存: 代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/mman.h> #include <sys/stat.h> #include <u…

服务器数据恢复—异常断电导致ESXi虚拟机无法启动的数据恢复案例

服务器数据恢复环境&#xff1a; 某大厂PS4000服务器&#xff0c;服务器上部署VMware ESXi虚拟化平台。 服务器故障&#xff1a; 机房断电&#xff0c;重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件&#xff0c;发现无法启动的虚拟机的配置文件除了磁盘文…

【全开源】自习室在线订座小程序源码(FastAdmin+ThinkPHP+uView)

打造高效学习空间的必备工具 一、引言&#xff1a;自习室订座难题的解决之道 在如今的学习环境中&#xff0c;自习室成为了学生们备战考试、进行深度学习的重要场所。然而&#xff0c;随着学生人数的增加&#xff0c;自习室座位资源变得日益紧张。为了解决这一难题&#xff0…

SSL证书该如何选择,DV、OV、EV又有什么区别?

选择SSL证书时&#xff0c;您需要根据您的网站性质、安全需求以及预算来决定。DV&#xff08;域名验证&#xff09;、OV&#xff08;组织验证&#xff09;、EV&#xff08;扩展验证&#xff09;是三种不同类型的SSL证书&#xff0c;它们在验证深度、安全性和可见性方面有所差异…

Fastjson 反序列化漏洞[1.2.24-rce]

漏洞复现环境搭建请参考 http://t.csdnimg.cn/vSaaw kali切换jdk版本请参考 Kali安装JAVA8和切换JDK版本的详细过程_kali安装jdk8-CSDN博客 漏洞原理 Fastjson提供的com.sun.rowset.JdbcRowSetImpl类下的dataSourceName方法支持传入一个RMI/LDAP源&#xff0c;支持远程调用。…

走进智慧仓储:3D可视化工厂园区革新物流新纪元

在快节奏的现代生活中&#xff0c;物流仓储行业扮演着至关重要的角色。随着科技的飞速发展&#xff0c;传统仓储模式正面临一场前所未有的变革。今天&#xff0c;就让我们一起看看3D可视化技术如何为物流行业带来前所未有的便利与效率。 什么是3D可视化工厂园区&#xff1f; 3…

ABP框架+Mysql(二)

展示页面--图书列表页面 本地化 开始的UI开发之前,我们首先要准备本地化的文本(这是你通常在开发应用程序时需要做的).本地化文本在前端页面会常用。 本地化文本位于 Acme.BookStore.Domain.Shared 项目的 Localization/BookStore 文件夹下: 打开 en.json (英文翻译)文件并更…

「浏览器」跨站请求伪造CSRF攻击的原理以及防范措施

前言 HTTP 是一个无状态的协议&#xff0c;比如需要账号密码登录的网站这个场景&#xff0c;为了避免每次都需要重复输入&#xff0c;有一种方案就是Cookie&#xff0c;具体使用不做赘述&#xff0c;但是这样带来了一些安全问题。跨站请求伪造&#xff08;CSRF&#xff09;攻击…

贵州省特岗教师报名流程及一寸蓝底证件照电子版制作指南

贵阳市2024年特岗教师招聘公告已发布&#xff0c;310个岗位虚位以待&#xff0c;报名工作将于5月27日9:00至5月29日18:00期间进行。本文将为您提供详细的报名流程以及如何制作符合要求的一寸蓝底证件照电子版&#xff0c;助您顺利报名。 一、贵州特岗教师网上报名流程 网上报…

EQMentor情商导师文心智能体:引领情商提升与人际关系改善的智能导师

目录 一、引言 情商的重要性 EQMentor智能体的诞生背景与目的 二、EQMentor智能体的概述 EQMentor智能体 简述EQMentor情商智能体的核心功能与特点 三、 EQMentor情商导师智能体 智能体的设计理念 智能体的功能特点 智能体的使用举例 四、结语 一、引言 情商的重要…

六面体大米装袋机在提升大米包装效率中的作用

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;各行各业都在寻求创新与突破&#xff0c;以提升生产效率和降低成本。而在大米包装领域&#xff0c;六面体大米装袋机的出现&#xff0c;无疑为整个行业带来了革命性的变化。这种先进的机械设备不仅提高了大米的包装效率&a…

迷你手持小风扇哪个品牌续航强?五款强续航迷你手持小风扇推荐!

夏天就俩字儿&#xff1a;热和空调&#xff01;太阳大得让人想躲&#xff0c;一出汗&#xff0c;感觉全身毛孔都在喊“太热啦”&#xff01;这时空调简直是救命恩人啊&#xff0c;热得只想赖在屋里不出来。但出门总得面对大太阳&#xff0c;一出门就哗哗流汗。所以&#xff0c;…