完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
安富莱提供的例程RA8875,往里面移植4×4矩阵键盘失败,就是搞不懂原因,扫描程序如下int KEY_Scan(void){
u8 KeyVal; GPIO_Write(GPIOA,(GPIOA->ODR 0xf0ff | 0x0f00)); if((GPIOA->IDR 0xf000)==0x0000) return -1; else { bsp_DelayMS(5); if((GPIOA->IDR 0xf000)==0x0000) return -1; } GPIO_Write(GPIOA,(GPIOA->ODR 0xf0ff | 0x0100)); switch(GPIOA->IDR 0xf000) { case 0x1000: KeyVal=15; break; case 0x2000: KeyVal=11; break; case 0x4000: KeyVal=7; break; case 0x8000: KeyVal=3; break; } GPIO_Write(GPIOA,(GPIOA->ODR 0xf0ff | 0x0200)); switch(GPIOA->IDR 0xf000) { case 0x1000: KeyVal=14; break; case 0x2000: KeyVal=10; break; case 0x4000: KeyVal=6; break; case 0x8000: KeyVal=2; break; } GPIO_Write(GPIOA,(GPIOA->ODR 0xf0ff | 0x0400)); switch(GPIOA->IDR 0xf000) { case 0x1000: KeyVal=13; break; case 0x2000: KeyVal=9; break; case 0x4000: KeyVal=5; break; case 0x8000: KeyVal=1; break; } GPIO_Write(GPIOA,(GPIOA->ODR 0xf0ff | 0x0800)); switch(GPIOA->IDR 0xf000) { case 0x1000: KeyVal=12; break; case 0x2000: KeyVal=8; break; case 0x4000: KeyVal=4; break; case 0x8000: KeyVal=0; break; } return KeyVal; } |
|
相关推荐
1个回答
|
|
在分析和解决RA8875移植矩阵键盘程序失败的问题之前,我们先了解一下RA8875和矩阵键盘的基本概念。
RA8875是一款集成了TFT LCD控制器的显示驱动芯片,广泛应用于嵌入式系统中。矩阵键盘是一种键盘设计,它通过行和列的交叉点来检测按键是否被按下。 根据您提供的代码片段,我们可以分析以下几个可能导致移植失败的原因: 1. GPIO初始化问题:在移植矩阵键盘程序之前,请确保您已经正确初始化了GPIO端口。这包括配置GPIO引脚的输入/输出模式、上拉/下拉电阻等。 2. 时序问题:矩阵键盘的扫描需要合适的时序。在您的代码中,使用了`bsp_DelayMS(5)`来实现延迟。请确保这个延迟时间足够长,以便矩阵键盘能够稳定地检测到按键状态。 3. 扫描逻辑问题:您的代码中使用了`GPIO_Write()`和`GPIOA->ODR`来设置GPIO输出值,然后通过`GPIOA->IDR`读取输入值。请确保您的扫描逻辑是正确的,并且与矩阵键盘的实际连接方式相匹配。 4. 硬件连接问题:请检查矩阵键盘与RA8875之间的硬件连接是否正确。确保所有的行和列引脚都已正确连接到相应的GPIO端口。 为了解决这个问题,您可以尝试以下步骤: 1. 确保GPIO端口已正确初始化,包括输入/输出模式、上拉/下拉电阻等。 2. 调整`bsp_DelayMS(5)`中的延迟时间,以确保矩阵键盘能够稳定地检测到按键状态。 3. 检查您的扫描逻辑,确保它与矩阵键盘的实际连接方式相匹配。 4. 仔细检查矩阵键盘与RA8875之间的硬件连接,确保所有的行和列引脚都已正确连接到相应的GPIO端口。 5. 如果问题仍然存在,尝试使用其他示例代码或库函数来实现矩阵键盘的扫描功能,以便找到可能的问题所在。 通过以上步骤,您应该能够找到导致RA8875移植矩阵键盘程序失败的原因,并采取相应的措施来解决这个问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1763 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1617 浏览 1 评论
1059 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
723 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1933浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
726浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
592浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
550浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 15:23 , Processed in 0.840600 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号