打印
[技术问答]

请教 HC32F002 位 读取

[复制链接]
809|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
volbin0042|  楼主 | 2022-12-22 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HC32F002_DDL_Rev1.0.1
GPIO.h
#define GPIO_PB05_READ()               REG_READBITS(GPIOB->IN, GPIO_PIN_05)
=====================================================
程序代码如下
boolean_t VOLB;
VOLB=GPIO_PB05_READ();

当PB05为HI 时  VOLB传回0x20
不应该是传回1吗?

读位 啥变成 字节

使用特权

评论回复
沙发
mcu021| | 2022-12-22 11:59 | 只看该作者
为了编译后的代码尺寸小。你可以试试返加0、1 与返回0,非0的代码大小有多少差别。

使用特权

评论回复
板凳
volbin0042|  楼主 | 2022-12-22 14:24 | 只看该作者
mcu021 发表于 2022-12-22 11:59
为了编译后的代码尺寸小。你可以试试返加0、1 与返回0,非0的代码大小有多少差别。 ...

是这意思吗?
VOLB=(GPIO_PB05_READ()&0X20);
if(VOLB==0)
        {
                oldstate2=255;
        }
if((VOLB!=0)&(oldstate2==255))
        {
                LPUART_Transmit(LPUART0, FUN00[5], 5, 0xFFFFFF);
                oldstate2=0;
        }
我想知道这个函式库是否有问题
还是我理解错误       

使用特权

评论回复
地板
ddllxxrr| | 2022-12-22 15:36 | 只看该作者
没有错,32位机,包括STM32,读位的库函数都是这样。判断时不用布尔

使用特权

评论回复
5
volbin0042|  楼主 | 2022-12-23 09:16 | 只看该作者
ddllxxrr 发表于 2022-12-22 15:36
没有错,32位机,包括STM32,读位的库函数都是这样。判断时不用布尔

明白了
DPS1 =GPIO_PD04_READ();
DPS2 =GPIO_PD05_READ();
DPSW =GPIO_PORTD_READ();

位读取 有MASK 一样回传字节

使用特权

评论回复
6
tpgf| | 2023-1-3 10:36 | 只看该作者
怎么会呢 你定义的就是布尔型变量 不会出现字节型的结果啊

使用特权

评论回复
7
nawu| | 2023-1-3 11:06 | 只看该作者
感觉数据类型不匹配  给布尔赋值任何不为零的字节都是真

使用特权

评论回复
8
aoyi| | 2023-1-3 11:14 | 只看该作者
读取位值的库函数都是这样的 不要使用布尔型变量

使用特权

评论回复
9
zljiu| | 2023-1-3 11:24 | 只看该作者
通过位进行读取吧  不要是用这种布尔变量 不准确的

使用特权

评论回复
10
gwsan| | 2023-1-3 11:54 | 只看该作者
这种变量的形式使用的不是很好 最好不用布尔型

使用特权

评论回复
11
tfqi| | 2023-1-3 12:02 | 只看该作者
请问DPS1和DPS2都是什么种类的数据类型呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

51

帖子

1

粉丝