STM32 HAL库的定时器中断回调函数跟串口中断回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{     //添加回调后的程序逻辑 
        if (htim->Instance == htim2.Instance) //判断是否定时器2
        {

        }
}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{     //添加回调后的程序逻辑
        if(huart->Instance == USART1)  //判断是否串口1
        {

        }
}

  中断回调函数是在某个中断发生完成之后调用的,在用Cubemx生成的代码中,其实已经有生成中断回调函数了的,不过那个我们可以不用管,自己在项目里重写中断回调函数以及程序逻辑即可。

  

  从上图我们可以看到,自动生成的代码中,中断回调函数都有一个__weak 关键字,加上了__weak 修饰符的函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,那么编译器就会执行__weak 声明的函数,并且编译器不会报错。所以我们可以在别的地方定义一个相同名字的函数,而不必也尽量不要修改之前的函数。

 

原文地址:https://www.cnblogs.com/xingboy/p/10967174.html

时间: 2024-12-11 15:18:23

STM32 HAL库的定时器中断回调函数跟串口中断回调函数的相关文章

STM32 HAL库和LL库的区别

上次开发一个项目,使用一个小容量的STM32 ARM CORTEX核心的单片机,使用STM32CUBEMX自动生成配置代码,正准备编写程序的时候,发现容量竟然有6K多.这个容量在使用大容量FLASH的单片机时不感到什么,可是使用小容量单片机的时候,就明显不够用了. 没有办法,只好打算回去使用原来的StdLib库,前两年不就这么干的嘛,也没什么难的.可是回头找对应库的时候,发现悲剧了,没有这个序列的标准库. 这也难不倒我们老司机!我就从HAL库里面把必须的寄存器语句摘出来,把冗余的有效检验和冲突处

STM32 HAL库学习系列第7篇---定时器TIM 输入捕获功能

测量脉冲宽度或者测量频率 ? 基本方法 1.设置TIM2?CH1为输入捕获功能:? 2.设置上升沿捕获:? 3.使能TIM2?CH1捕获功能:? 4.捕获到上升沿后,存入capture_buf[0],改为捕获下降沿: ?5.捕获到下降沿后,存入capture_buf[1],改为捕获上升沿:? 6.捕获到上升沿后,存入capture_buf[2],关闭TIM2?CH1捕获功能:? 7.计算:capture_buf[2]?-?capture_buf[0]就是周期,capture_buf[1]?-?c

STM32 HAL库 UART使用printf

// 添加这个函数 int fputc(int ch,FILE *f) { uint8_t temp[1]={ch}; HAL_UART_Transmit(&UartHandle,temp,1,2); } MDK设置:勾选Use Micro LIB 测试板子:STM32F746NG-DISCOVERY main.c文件 /* Includes ------------------------------------------------------------------*/ #include

STM32 HAL库 IIC 协议库函数

/* 第1个参数为I2C操作句柄 第2个参数为从机设备地址 第3个参数为从机寄存器地址 第4个参数为从机寄存器地址长度 第5个参数为发送的数据的起始地址 第6个参数为传输数据的大小 第7个参数为操作超时时间 */HAL_I2C_Mem_Write(&hi2c2,salve_add,0,0,PA_BUFF,sizeof(PA_BUFF),0x10); HAL_I2C_Mem_Write_IT(): HAL_I2C_Mem_Read(); HAL_I2C_Mem_Read_IT(); HAL_I2C

关于STM32 hal库SPI的一个BUG

具体bug点在HAL_SPI_TransmitReceive这个函数里面.具体表现是莫名其妙会进入hardfault,但是,也不排除直接debug跑死没反应的情况. 因为在最初的时候,程序调试异常都是直接调试卡死.这其中的具体原因还没搞清楚. 既然是bug,那肯定是满足了一定条件下的错误.但是很遗憾,具体条件我没找到.但是解决方法找到了. 代码中这一段改成: while((hspi->TxXferCount > 0) || (hspi->RxXferCount > 0)) { /*

STM32F103 PWM输出实验(HAL库)

1.芯片输出PWM波形打码步骤 1.0主函数 int main(void) { HAL_Init(); //初始化HAL库 Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M delay_init(72); //初始化延时函数 uart_init(115200); //初始化串口 LED_Init(); //初始化LED TIM1_PWM_Init(20000,72); //72分频,即1M . 1000000/20000 = 50 Hz ,即20ms whil

STM32 的 printf() 函数串口重定向(HAL库标准库都适用)

1.建立工程 2.核心:添加新文件usar_fputc.c (名字随便自己命名),把文件添加到项目中去 #include "stdio.h" #include "stm32f1xx_hal.h" extern UART_HandleTypeDef huart1; uint8_t ch; uint8_t ch_r; //重写这个函数,重定向printf函数到串口 /*fputc*/ int fputc(int c, FILE * f) { ch=c; HAL_UART

【STM32H7教程】第36章 STM32H7的LPTIM低功耗定时器基础知识和HAL库API

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第36章       STM32H7的LPTIM低功耗定时器基础知识和HAL库API 本章节为大家讲解LPTIM1 – LPTIM5共计5个定时器的基础知识和对应的HAL库API. 36.1 初学者重要提示 36.2 低功耗定时器基础知识 36.3 低功耗定时器的HAL库用户 36.4 源文件stm32h7xx_hal_lptim.c 36.5 总结 36.1 初学者

STM32 IIC双机通信—— HAL库硬件IIC版

参考传送门 关于IIC的原理这里我就不多说了,网上有很多很好的解析,如果要看我个人对IIC的理解的话,可以点击查看,这里主要讲一下怎样利用STM32CubeMx实现IIC的通讯,经过个人实践,感觉HAL库的硬件IIC要比标准库的稳定.好了,下面就从STM32CubeMx 配置开始一步步实现IIC通讯. STM32CubeMx的配置,这里关于新建工程的步骤我就不细说了,如果还不会操作STM32CubeMx 的可以点击链接查看, 这里主要对IIC的配置进行说明. 了解IIC的都知道,IIC通信有主从