stm32 hal使用sysTick定时器非阻塞延时方法

简介

一种在stm32 hal库中实现非阻塞任务处理扫描的方式。

stm32f1xx_it.c

c 复制代码
/* USER CODE BEGIN 0 */
uint8_t Time_1ms = 0;
uint8_t Time_10ms = 0;

/* USER CODE END 0 */

/**
  * @brief This function handles System tick timer.
  */
void SysTick_Handler(void)
{
  /* USER CODE BEGIN SysTick_IRQn 0 */
	Time_1ms++;
	Time_10ms++;

  /* USER CODE END SysTick_IRQn 0 */
  HAL_IncTick();
  /* USER CODE BEGIN SysTick_IRQn 1 */

  /* USER CODE END SysTick_IRQn 1 */
}

main.c

c 复制代码
/*
* 变量定义
*/
#define TIMER_FLAG_SET      1U
#define TIMER_FLAG_CLR      0U
#define TASK_TIMER_1MS      1U
#define TASK_TIMER_10MS     10U
//#define TASK_TIMER_30MS     30U

/*  扫描函数
		1ms
		10ms

*/
extern uint8_t Time_1ms;
extern uint8_t Time_10ms;

uint8_t Get1msFlag(void)
{
		uint8_t tempReturn = TIMER_FLAG_CLR;
		if(Time_1ms >= TASK_TIMER_1MS)
		{
				Time_1ms = TIMER_FLAG_CLR;
				tempReturn = TIMER_FLAG_SET;
		}
		else{}
		return tempReturn;
}

uint8_t Get10msFlag(void)
{
		uint8_t tempReturn = TIMER_FLAG_CLR;
		if(Time_10ms >= TASK_TIMER_10MS)
		{
				Time_10ms = TIMER_FLAG_CLR;
				tempReturn = TIMER_FLAG_SET;
		}
		else{}
		return tempReturn;
}

int main(void)
{
  	HAL_Init();
	SystemClock_Config();
	while(1)
	{
		if(Get1msFlag() == TIMER_FLAG_SET)
		{
			//task1();
		}
		
		if(Get10msFlag() == TIMER_FLAG_SET)
		{
			//task2();
		}
	}
}
相关推荐
LCG米23 分钟前
嵌入式Python开发:MicroPython在物联网硬件上的实战应用案例
python·单片机·物联网
云山工作室1 小时前
基于zigbee的广告牌安全监测系统设计与实现(论文+源码)
单片机·毕业设计·毕设
DIY机器人工房1 小时前
简单理解:为什么错误计数器一般要选 uint32_t 类型?
stm32·单片机·嵌入式硬件·嵌入式·diy机器人工房
上大科技蔡生1 小时前
CS5567:具有宽占空比范围的60V同步降压DCDC控制器
单片机·嵌入式硬件·fpga开发·dcdc
lingzhilab2 小时前
零知IDE——基于STM32F103RBT6的PAJ7620U2手势控制WS2812 RGB灯带系统
stm32·单片机·嵌入式硬件
三佛科技-187366133972 小时前
BP85956D集成VCC电容电机驱动BUCK电源芯片(12V300mA应用电路)
stm32·单片机·物联网
爱睡觉的王宇昊2 小时前
PCB设计完全指南:从软件选择到基础规范(通用电路篇详解)
笔记·stm32·单片机·嵌入式硬件·学习
白书宇2 小时前
【STM32实战】从零开始写Linux 0.12内核 第1个实验安装IAR 8.5
linux·c语言·驱动开发·stm32·单片机·嵌入式硬件
意法半导体STM322 小时前
【官方原创】一站式生成STM32N6的ExtMemLoader, FSBL, Appli的点灯工程 LAT1614
人工智能·stm32·单片机·嵌入式硬件·mcu·stm32n6
ShiMetaPi3 小时前
GM-3568JHF丨ARM+FPGA异构开发板系列教程:外设教程 08 串口
stm32·单片机·fpga开发·rk3568