完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
昨天遇到一个问题,使用GPIOPinRead();函数在读取GPIO返回值的时候返回的是管脚值,我翻了技术手册但是上面没有说明什么函数是读取管脚返回值,唯一一个就是GPIOPinRead();书写过后发现只是返回值是管脚,而不是管脚得到的数值
while(1) { Dval0=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_0); Dval1=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_1); Dval3=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_3); Dval4=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_4); Dval5=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_5); Dval6=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_6); Dval7=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_7); //Dval11=*(volatile unsigned long*)(GPIO_PORTD_BASE); if(!GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_0)) { PWMGenDisable(PWM_BASE,PWM_GEN_1); PWMPulseWidthSet(PWM_BASE,PWM_OUT_2,50); PWMPulseWidthSet(PWM_BASE,PWM_OUT_3,600); } else if(!GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_1)) { PWMGenDisable(PWM_BASE,PWM_GEN_1); PWMPulseWidthSet(PWM_BASE,PWM_OUT_2,100); PWMPulseWidthSet(PWM_BASE,PWM_OUT_3,500); } |
|
相关推荐
4个回答
|
|
long GPIOPinRead(unsigned long ulPort, unsigned char ucPins)
读取所选GPIO端口指定管脚的值,返回1个位组合的字节。该字节提供了由ucPins指定管脚的状态,对应的位值表示GPIO 管脚的高低状态。ucPins未指定的管脚位值是0。返回值已强制转换为long型,因此位31:8应该忽略。 这个函数应该在相应管脚已经设置为输出状态的情况下,由于GPIO得管脚结构我们知道在输出模式下,不管是开漏还是推挽用此函数读回来的值都是管脚的输出锁存值 |
|
|
|
GPIOPinRead(),其功能为读取某端口某管脚的状态,该函数也在gpio.c中,其定义为:
Long GPIOPinRead(unsigned long ulPort, unsigned char ucPins) { ASSERT(GPIOBaseValid(ulPort)); return(HWREG(ulPort + (GPIO_O_DATA + (ucPins << 2)))); // Return the pin value(s). } 其中HWREG(ulPort + (GPIO_O_DATA + (ucPins << 2)))这句很重要,体现了一种利用地址线屏蔽而实现可对任意位操作的机制,将地址总线的位[9:2]用作屏蔽位,在读操作过程中,如果与数据位相关联的地址位被设为1,那么读取该值,如果与数据位相关联的地址位被设为0,那么不管它的实际值是什么,都将该值读作0。 |
|
|
|
读取端口的输出锁存值,需要直接读取对应端口的 GPIOx_ODR,其中 x 为实际端口的对应编号A、B、C
等; 具体在程序中就是 GPIOx.ODR; GPIOx 是各芯片提供的头文件中预先定义的 GPIO_TypeDef 类型的结构体;内容对应每个端口的寄存器组; |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
124 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
506 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
710 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核源代码的目录结构和文件说明
634 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核简介
1225 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 00:50 , Processed in 0.743618 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号