[技术问答] 使用m453如何一次讀取指撥開關

[复制链接]
1678|14
 楼主| devisalce01 发表于 2015-8-14 20:21 | 显示全部楼层 |阅读模式
不能使用if(PA==0x00)
或是   uint32_t data;     
         data=PA;
有沒有辦法一次讀取PA或是PB整個值
我看都只能像PA0單個判斷

謝謝
734774645 发表于 2015-8-14 20:28 | 显示全部楼层
楼主,你的意思说明白点,是怎么回事,你没有讲清楚啊。
734774645 发表于 2015-8-14 20:29 | 显示全部楼层
你是想把PA的值用哪儿去?
你可以这样if(!PA)
这样跟你第一句等效。
 楼主| devisalce01 发表于 2015-8-14 20:35 | 显示全部楼层
本帖最后由 devisalce01 于 2015-8-14 20:38 编辑

   
類似這種

但是會出現..\main.c(121): error:  #42: operand types are incompatible ("GPIO_T *" and "int")

while(1)
                {

                  if(PA==0x01)
                         {
                           PC->DOUT=PC->DOUT&0xaa;
                         }
                        else
                         {
                           PC->DOUT=PC->DOUT&0xFF;
                         }
                        
                }

  或是可以一次讀取PB0-PB15的值

  uint32_t gpio_data;
  gpio_data=PB;
734774645 发表于 2015-8-14 20:45 | 显示全部楼层
devisalce01 发表于 2015-8-14 20:35
類似這種

但是會出現..\main.c(121): error:  #42: operand types are incompatible ("GPIO_T *" and ...

拜托这个台湾来的朋友,你一次把代码上全啊, 你这些的没头没尾的,看不懂。
734774645 发表于 2015-8-14 20:47 | 显示全部楼层
42: operand types are incompatible ("GPIO_T *" and "int")
这个#42,是哪一行啊?你说清楚了。这个说GPIO_T *不是int类型。
734774645 发表于 2015-8-14 20:48 | 显示全部楼层
你加个强制转换试试看吧,一般如果有冲突需要这个操作方式。
598330983 发表于 2015-8-14 21:03 | 显示全部楼层
根据问题,还真是需要强制转换,除非你不这样写。
捉虫天师 发表于 2015-8-15 08:34 | 显示全部楼层
去头文件看看那个数据是什么型号啊,要保持一致,不一致的就要转换,
捉虫天师 发表于 2015-8-15 08:35 | 显示全部楼层
如果有个16位的数据,却用两个8位的变量保存,你就可以先强制转换前面的然后移位8bit,然后跟后面那个或运算。
wellhao2004 发表于 2015-8-15 15:15 | 显示全部楼层
643757107 发表于 2015-8-20 17:18 | 显示全部楼层
那个如果在内存里是连续的,就可以通过指针一个变量搞定的。
天灵灵地灵灵 发表于 2015-8-20 20:25 | 显示全部楼层
读取那个数值后,可以用位操作实现。
yiyigirl2014 发表于 2015-8-20 20:46 | 显示全部楼层
先读取端口的然后根据位运算判断所取的那一位。
tcchiu1 发表于 2015-8-21 14:27 | 显示全部楼层
楼主看一下TRM。GPIO有两个寄存器。
输出信号 PA->DOUT
输入信号 PA->PIN
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部