首页 > 其他分享 >STM32 TIM3 定时器应用之数码管显示定时时间

STM32 TIM3 定时器应用之数码管显示定时时间

时间:2024-03-18 11:58:52浏览次数:19  
标签:TIM3 定时器 HAL Pin PIN WritePin STM32 数码管 GPIO

 实现目标

1、STM32 基于HAL库定时器的使用;

2、加强数码管的学习。


一、定时器概述?

1、生活中哪些场景会用到定时器?

2、STM32F1定时器

二、原理图设计

三、STM32CubeMX 配置

1.定时器时钟配置

2.定时器3、数码管、蜂鸣器的配置

   

3.开启定时器3中断

四、程序设计

1.打开定时器3中断

开启定时中断函数:   HAL_TIM_Base_Start_IT(&htimx);   //x  为要开启的定时器号,下面代码为开启定时器2中断,x= 3

HAL_TIM_Base_Start_IT(&htim3);//开启定时器3中断

2.重写中断回调函数

中断回调函数内尽量少放我们处理的代码。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim->Instance == htim3.Instance) //1S进入1次中断
	{			
			s++;//秒 ++
			if ( s >= 60)//1s 到
			{
				s = 0;			
				flag = 1;
			}	
	}  
}

3.74HC595驱动程序、自写延时函数

void HC595_Send_Byte(unsigned  char byte)
{
	unsigned  char i;
	for (i = 0; i < 8; i ++)  //一个字节8位,传输8次,一次一位,循环8次,刚好移完8位
	{
	  /****  步骤1:将数据传到DS引脚    ****/
		if (byte & 0x80)        //先传输高位,通过与运算判断第八是否为1
		  HAL_GPIO_WritePin(GPIOA, DATA_Pin, GPIO_PIN_SET); //如果第八位是1,则与 595 DS连接的引脚输出高电平
		else                    //否则输出低电平
		  HAL_GPIO_WritePin(GPIOA, DATA_Pin, GPIO_PIN_RESET);		
			
		/*** 步骤2:SHCP每产生一个上升沿,当前的bit就被送入移位寄存器 ***/
      HAL_GPIO_WritePin(GPIOA, SHCP_Pin, GPIO_PIN_RESET);	 // SHCP拉低	          
      for_delay_us(5);	// 适当延时	
		
      HAL_GPIO_WritePin(GPIOA, SHCP_Pin, GPIO_PIN_SET);		// SHCP拉高, SHCP产生上升沿	
      for_delay_us(5);				
		  byte <<= 1;		// 左移一位,将低位往高位移,通过	if (byte & 0x80)判断低位是否为1
	}
	
	/**  步骤3:STCP产生一个上升沿,移位寄存器的数据移入存储寄存器  **/ 
   HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_RESET);	// 将STCP拉低
   for_delay_us(5);		
   HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_SET);// 再将STCP拉高,STCP即可产生一个上升沿	
   for_delay_us(5);	
}

/*
for循环实现延时us
*/
void for_delay_us(uint32_t nus)
{
	 uint32_t Delay = nus * 168/4;
	 do
	 {
	 }
	 while (Delay --);
}

4.while(1)中实现的功能函数

		if (flag == 1)
		{
			flag = 0;
			HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_SET);
			HAL_Delay(200);
			HAL_GPIO_WritePin(BEEP_GPIO_Port, BEEP_Pin, GPIO_PIN_RESET);
			HAL_Delay(200);			
		
		}
	
		HAL_GPIO_WritePin(GPIOA, SEG1_Pin, GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOA, SEG2_Pin, GPIO_PIN_RESET);		
		HAL_GPIO_WritePin(GPIOB, SEG3_Pin, GPIO_PIN_RESET);		
		HC595_Send_Byte(table[s/10]);//函数调用			
        for_delay_us(5);	// 适当延时	
		HC595_Send_Byte(0xff);	//	消影
		
		HAL_GPIO_WritePin(GPIOA, SEG2_Pin, GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOA, SEG1_Pin, GPIO_PIN_RESET);		
		HAL_GPIO_WritePin(GPIOB, SEG3_Pin, GPIO_PIN_RESET);		
		HC595_Send_Byte(table[s%10]);//函数调用			
        for_delay_us(5);	// 适当延时	
		HC595_Send_Byte(0xff);//	消影	

五、实验现象

六、仿真实现


总结

标签:TIM3,定时器,HAL,Pin,PIN,WritePin,STM32,数码管,GPIO
From: https://blog.csdn.net/luojuan198780/article/details/136803553

相关文章

  • libtorch实现一个数码管数字识别网络
    这里的数字范围是0~9共10个数字,用5×3的数字矩阵表示,把它当成图像那么可以看成5×3的图片。如下图中的数字0,用“1”代表有颜色(亮),“0”代表没颜色(灭)。网络是经典的BP神经网络,15个输入,10个输出。当输入是形状“0”时,输出索引为0的数字最大接近于1;当输入是形状“1”时,输出索引为1的......
  • 利用 STM32 TIMER 触发 ADC 实现分组转换
    1、问题描述使用STM32G4系列芯片开发产品,用到其中一个ADC模块的多个通道,他希望使用TIMER来定时触发这几个通道的转换。不过他有两点疑惑。第一,他期望定时器触发这几个通道是每触发一次则只转换一个通道,这样依次触发转换,而不是触发一次就把几个通道都转换完结。他......
  • STM32第九节(中级篇):RCC(第二节)——讲解系统时钟配置函数SetSysClockTo72
    目录前言STM32第九节(中级篇):RCC(第二节)——讲解系统时钟配置函数SetSysClockTo72代码内容位置及检索分析代码 代码展示时钟控制使能闪存控制寄存器配置AHP,APB1,APB2的总线时钟配置锁相环时钟 超频操作小结前言    上节课我们讲了理论部分,那么我们这节课......
  • 【课设】/【毕设】ESP32上传温湿度至新版Onenet云平台并由新版Onenet云平台下发命令控
    一、uniapp设计  1、APP生成token秘钥:  1.1.下载HBuider软件:     直接搜索HBuider,进入官网下载软件:  2.新建项目-选择默认模版3.打开index.vue4.点击运行至内置浏览器;2.1获取Onenet云平台API接口 2.1.1进入Onenet云平台点击服务与支持-文档......
  • 基于EP4CE6F17C8的FPGA数码管动态显示实例
    一、电路模块1、数码管开发板板载了6个数码管,全部为共阳型,原理图如下图所示,段码端引脚为DIG[0]~DIG[7]共8位(包含小数点),位选端引脚为SEL[0]~SEL[5]共6位。端口均为低电平有效。其实物图如下所示。数码管引脚分配见下表。2、时钟晶振开发板板载了一个50MHz的有源晶振,为系统......
  • 609、基于单片机的秒表(倒计时,数码管,独立按键)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括需要完整的资料可以点击下面的名片,找我要资源......
  • STM32F105双路隔离型CAN总线转4G控制板 - 把CAN数据发送到TCP服务器,实现通过TCP透传
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/product/STM32F105_2CAN/index.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>......
  • STM32CubeMX没有生成Keil工程问题
    1. Project中选择IDE为MDK-ARM 2.你可能没有联网,所以在GENERATECODE时没有弹窗提示需要下载stm32cube_fw_XXX.zip软件包,根据提示登录(没有账号就注册一个)后按提示下载对应软件包即可,下图为下载中的stm32F4xx软件包。  安装后,重新GENERATECODE,即可生成MDK-ARM目录......
  • STM32入门(三):配置STM32项目环境
    配置STM32项目环境1. 选择合适的开发板首先我们需要选择一块合适简单的开发板,学习的板子选择stm32—f103系列板子。这一系列器件具有以下优势:性能:STM32F103F系列提供了一个强大的32位ARMCortex-M3内核,具有足够的处理能力来处理大多数嵌入式应用。外设丰富:这些芯片提供......
  • stm32-编码器测速
    一、编码器简介 编码电机 旋转编码器 A,B相分别接通道一和二的引脚,VCC,GND接单片机VCC,GND二、正交编码器工作原理1.计数方式 2.框图分析 由图可知,只有CH1和CH2有编码器接口,且编码器只用到了输入捕获结构体的输入滤波和边沿检测器,则其余的结构体成员都不......