硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2175|回复: 3
收起左侧

LL库相比标准库一个重要的改变就是超大批量使用内联函数,其它基本没区别

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117535
QQ
发表于 2019-6-11 10:51:44 | 显示全部楼层 |阅读模式
LL库和标准库都是直接撸寄存器,各个函数的独立性也都比较强,而HAL各个函数之间耦合比较强,必须要成套使用。

具体到LL库和标准库,他们之间的区别就是LL库将大量独立小函数设置成了如下方式的内联形式

  1. /**
  2.   * @brief  Check if the USART Transmission Complete Interrupt is enabled or disabled.
  3.   * @rmtoll CR1          TCIE          LL_USART_IsEnabledIT_TC
  4.   * @param  USARTx USART Instance
  5.   * @retval State of bit (1 or 0).
  6.   */
  7. __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(USART_TypeDef *USARTx)
  8. {
  9.   return (READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE));
  10. }
复制代码


内联函数的作用就是将函数直接嵌入到调用此函数的代码中展开,从而降低调用此函数所占用的时间。
回复

使用道具 举报

36

主题

2051

回帖

2159

积分

至尊会员

积分
2159
发表于 2019-6-11 12:18:36 | 显示全部楼层
CMSIS的API基本都是内联
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

0

主题

131

回帖

131

积分

初级会员

积分
131
发表于 2019-6-11 12:59:10 | 显示全部楼层
很多所谓函数其实就一语句, 根本就该内联
LL库比标准库更接近寄存器, 也更高效
回复

使用道具 举报

4

主题

39

回帖

51

积分

初级会员

积分
51
发表于 2019-6-11 15:20:25 | 显示全部楼层
所谓的LL就是对寄存器的简单封装,内联无疑是最佳
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 09:47 , Processed in 0.036946 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表