对STM32 HAL库的一些思考(二)__weak关键字和systick

本文探讨了STM32 HAL库中__weak关键字的作用,它允许函数重定义并实现了类似C++的函数重载特性。同时,详细介绍了Systick定时器作为内核的心跳定时器,如何为系统提供时基信号,并在HAL库中如何应用。通过理解这两个概念,可以更好地自定义延时函数,同时避免直接修改库文件带来的问题。
摘要由CSDN通过智能技术生成
__weak关键字

有时候我们阅读HAL源码的时候会发现,很多函数前会有一个__weak的前缀,一开始我对这个前缀很好奇,想知道这到底是什么意思。在IAR for ARM中使用“go to defination”查看该关键字的时候会提示__weak defined on the command line,即在命令行中定义,得,这又回到原点了……

不过一次偶然的机会,在查找C语言相关资料时,我看到它的真实含义,该关键字用于函数前,编译器在链接函数时会优先链接没有该关键字前缀的函数,即变相的,而且是不完全的实现了C++的函数重载特性,示例:

//HAL库微秒延时函数,有__weak关键字即代表可以重载该函数
__weak HAL_Delay(__IO uint32_t delay);
//用户函数
HAL_Delay(__IO uint32_t delay);

以上两个函数,编译器会优先链接下面的函数,即为我们重定义延时函数提供了较大的便利性。


Systick定时器

了解ARM的人对Systick定时器一定不陌生,这是内核自带的定时器,不过我更喜欢称它为心跳定时器,一般在裸机开发时,由它提

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值