找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1631|回复: 14
打印 上一主题 下一主题
收起左侧

STM32单片机C语言位带操作和用库函数有什么优缺点?

  [复制链接]
跳转到指定楼层
楼主
ID:647261 发表于 2023-8-16 16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚学STM32单片机,用正点原子的C语言程序资料,里面有个sys.h,可以实现位带操作。
比如,我把一个LED接在PA0口,实现LED闪烁,只需要
int main(void)
{
    (io初始化省略)
    while(1)
    {
        PAout(0) = ~PAout(0);
        delayms(1000);
     }
}
用库函数的话
#define   LED_ON    GPIO_GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define   LED_OFF   GPIO_GPIO_SetBits(GPIOA,GPIO_Pin_0)
int main(void)
{
    (io初始化省略)
    while(1)
    {
        LED_ON;
        delayms(1000);
        LED_OFF;
        delayms(1000);
     }
}

请教一下,这两种方法有什么好和不好呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2023-8-16 16:52 | 只看该作者
位带操作可省数据单元,但只有硬件允许才能用;库函数所有数据单元都可用。
回复

使用道具 举报

板凳
ID:123289 发表于 2023-8-16 17:13 | 只看该作者
此类问题都是两种考虑:
一种是编写C时方便简单。
一种是编译后,运行指令简单。
看你取哪个。
回复

使用道具 举报

地板
ID:883242 发表于 2023-8-16 17:23 | 只看该作者
没什么优点,实际上大部分STM32单片机并不支持位带。
回复

使用道具 举报

5#
ID:320306 发表于 2023-8-16 18:23 | 只看该作者
用寄存器只是适合简单的练手,最终最会用库的,库简单一些,寄存器需要了解底层的每个寄存器的作用,很多,对应不过来!
回复

使用道具 举报

6#
ID:712097 发表于 2023-8-16 18:34 | 只看该作者
新手用寄存器方法最好,这个是熟悉硬件最直接的方法。
回复

使用道具 举报

7#
ID:883242 发表于 2023-8-16 19:13 | 只看该作者
chxelc 发表于 2023-8-16 18:34
新手用寄存器方法最好,这个是熟悉硬件最直接的方法。

用寄存器纯属浪费时间,直接用库函数,标准库,LL库都可以。
回复

使用道具 举报

8#
ID:647261 发表于 2023-8-16 19:15 | 只看该作者
大致了解了,感谢各位大佬!
回复

使用道具 举报

9#
ID:1085441 发表于 2023-8-16 22:08 | 只看该作者
chxelc 发表于 2023-8-16 18:34
新手用寄存器方法最好,这个是熟悉硬件最直接的方法。

我也这么认为
回复

使用道具 举报

10#
ID:1088185 发表于 2023-8-17 00:39 | 只看该作者
ST 的M3 M4 都有位操作, bitband了解一下
回复

使用道具 举报

11#
ID:1017036 发表于 2023-8-17 11:29 | 只看该作者
Hephaestus 发表于 2023-8-16 17:23
没什么优点,实际上大部分STM32单片机并不支持位带。

不过最流行的f1/f4系列都是支持位带操作的
回复

使用道具 举报

12#
ID:747496 发表于 2023-8-17 14:01 | 只看该作者
位操作的速度远远大于库函数。我测试过的。
回复

使用道具 举报

13#
ID:1088185 发表于 2023-8-18 00:30 | 只看该作者
速度, 更省空间, 最最最重要的是安全性。
回复

使用道具 举报

14#
ID:401564 发表于 2023-8-21 20:33 | 只看该作者
位操作的优点就像汇编对比于C一样,看起来有优点,实际上并没有什么优点
STM32片的资源已经不是128B年代了,节省空间这玩意在STM32上面,那是真的不实用,还不如不去折腾呢
至于速度什么的,一个位操作在STM32上面能比结构体操作书多少呢?真的需要那么快的速度吗?
回复

使用道具 举报

15#
ID:883242 发表于 2023-8-23 16:27 | 只看该作者
Y_G_G 发表于 2023-8-21 20:33
位操作的优点就像汇编对比于C一样,看起来有优点,实际上并没有什么优点
STM32片的资源已经不是128B年代了, ...

bitband地址32位,为了节约1位耗费32位???
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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