完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是我的程序(是STM32F767+tm1638)。就是键值一直读不出来,不知是什么原因?
TM1638.c: #include "delay.h" #include "stm32f7xx_hal.h" #include "TM1638.h" void TM1638_GPIO_Init(void) //ÅäÖÃGPIO { GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOA_CLK_ENABLE(); //¿ªÆôGPIOAʱÖÓ GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP ; GPIO_Initure.Pull=GPIO_PULLUP; GPIO_Initure.Speed=GPIO_SPEED_HIGH ; GPIO_Initure.Pin=GPIO_PIN_4; HAL_GPIO_Init(GPIOA,&GPIO_Initure); GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP ; GPIO_Initure.Pull=GPIO_PULLUP; GPIO_Initure.Speed=GPIO_SPEED_HIGH ; GPIO_Initure.Pin=GPIO_PIN_5; HAL_GPIO_Init(GPIOA,&GPIO_Initure); GPIO_Initure.Mode=GPIO_MODE_OUTPUT_OD ; GPIO_Initure.Pull=GPIO_PULLUP; GPIO_Initure.Speed=GPIO_SPEED_HIGH ; GPIO_Initure.Pin=GPIO_PIN_1; HAL_GPIO_Init(GPIOA,&GPIO_Initure); } void TM1638_Write(unsigned char DATA) //写数据函数 { unsigned char i; for(i=0;i<8;i++) { Reset_TM1638_CLK; delay_us(1); if(DATA&0X01){ Set_TM1638_DIO; } else{ Reset_TM1638_DIO; } DATA>>=1; Set_TM1638_CLK ; delay_us(1); } } unsigned char TM1638_Read(void) //读数据函数 { unsigned char i; unsigned char temp=0; Set_TM1638_DIO; for(i=0;i<8;i++) { temp>>=1; Reset_TM1638_CLK; if(Get_tm1638_DIO) temp|=0x80; Set_TM1638_CLK; delay_us(1); } return temp; } unsigned char Read_key(void) //读取按键值 { unsigned char c[4],i,key_value=0; Reset_TM1638_STB; TM1638_Write(0x42); delay_ms(10); for(i=0;i<4;i++) c=TM1638_Read(); Set_TM1638_STB; if(c[0]==0x04) key_value=1; if(c[0]==0x40) key_value=2; if(c[1]==0x04) key_value=3; if(c[1]==0x40) key_value=4; if(c[2]==0x04) key_value=5; if(c[2]==0x40) key_value=6; if(c[3]==0x04) key_value=7; if(c[3]==0x40) key_value=8; if(c[0]==0x02) key_value=9; if(c[0]==0x20) key_value=10; if(c[1]==0x02) key_value=11; if(c[1]==0x20) key_value=12; if(c[2]==0x02) key_value=13; if(c[2]==0x20) key_value=14; if(c[3]==0x02) key_value=15; if(c[3]==0x20) key_value=16; return key_value; } TM1638.h: #ifndef __TM1638_H #define __TM1638_H #include "sys.h" #define Set_TM1638_DIO HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET) #define Reset_TM1638_DIO HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET) #define Set_TM1638_CLK HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET) #define Reset_TM1638_CLK HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET) #define Set_TM1638_STB HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET) #define Reset_TM1638_STB HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET) #define Get_tm1638_DIO HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) void RCC_Config(void); void GPIO_Config(void); void TM1638_Write(uint8_t byte); unsigned char TM1638_Read(void) ; unsigned char Read_key(void); #endif |
|
相关推荐
3个回答
|
|
自己顶,请大神指点一下。
|
|
|
|
|
|
|
|
大神 怎么解决的 加个qq***
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1365 浏览 0 评论
国产NSI1300D05-DSWVR放大芯片放大增益8.2或41的问题
1358 浏览 0 评论
STM32串口接受中断使用C++STL中的queue导致所有中断失效
8895 浏览 1 评论
3648 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1580 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-7 01:54 , Processed in 0.505488 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191