完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include <STM32f10x_lib.h>
#include "sys.h" #include "delay.h" #include "7279.h" unsigned char Keynum; /****************************************************************************** 函数名:7279_WriteByte 输 入:dat:一个字节的数据 输 出:void 功 能:7279写入一个字节的数据 ******************************************************************************/ static void HD7279_WriteByte(unsigned char dat) { unsigned char i; HD7279_CS=0; //7279片选开 HD7279_DAT_OUT; //数据口设置为输出模式 delay_us(10); for(i=0;i<8;i++) { if(dat&0x80) { HD7279_DAT=1; } else { HD7279_DAT=0; } HD7279_CLK=1; dat = dat<<1; delay_us(10); HD7279_CLK=0; delay_us(10); } HD7279_DAT=0; } /****************************************************************************** 函数名:7279_ReadByte 输 入:void 输 出:dat:读出的一个字节数据 功 能:从7279读出一个字节数据 ******************************************************************************/ static unsigned char HD7279_ReadByte(void) { unsigned char dat=0,i; HD7279_WriteByte(HD7279_CMD_READKEY); HD7279_DAT=1; HD7279_DAT_IN; //数据口改为输入模式 HD7279_CLK=0; delay_us(10); for(i=0;i<8;i++) { HD7279_CLK=1; delay_us(10); dat = dat << 1; if(HD7279_DAT_R) { dat = dat + 1; } HD7279_CLK=0; delay_us(10); } return dat; } /****************************************************************************** 函数名:7279_Reset 输 入:void 输 出:void 功 能:复位7279 ******************************************************************************/ void HD7279_Reset(void) { HD7279_WriteByte(HD7279_CMD_RESET);//复位指令 HD7279_CS=1; } /****************************************************************************** 函数名:7279_Init 输 入:void 输 出:void 功 能:7279初始化 ******************************************************************************/ void HD7279_Init(void) { RCC->APB2ENR=1<<4;//使能时钟PORTC GPIOC->CRH&=0XFF0000FF; //推挽输出PC10,11,12 GPIOC->CRH|=0X00433300; //PC13浮空输入 GPIOC->ODR=0X3C00; Ex_NVIC_Config(GPIO_C,13,FTIR);//下降沿触发 MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2);//抢占2,子优先级2,组2 HD7279_CS=0;//使能HD7279 } /****************************************************************************** 函数名:7279_GetKeyVal 输 入:void 输 出:KeyValue:读出的键盘编号 功 能:从7279读出按键值 ******************************************************************************/ unsigned char HD7279_GetKeyVal(void) { unsigned char KeyValue; KeyValue = HD7279_ReadByte(); HD7279_CS=1; return KeyValue; } void EXTI15_10_IRQHandler(void) { Keynum = HD7279_GetKeyVal(); EXTI->R = 1<<13; //清除LINE13上的中断标志位 } 7279的点H文件 #ifndef __7279_H #define __7279_H //7279 控制命令字 #define HD7279_CMD_READKEY 0x15 //读取键值 #define HD7279_CMD_RESET 0xa4 //复位 #define HD7279_DAT PCout(10) #define HD7279_CS PCout(11) #define HD7279_CLK PCout(12) //7279的IO口配置 #define HD7279_DAT_R GPIOC->IDR&=1<<10 #define HD7279_DAT_OUT {GPIOC->CRH&=0XFFFFF0FF;GPIOC->CRH|=0X00000300;} //推挽输出 #define HD7279_DAT_IN {GPIOC->CRH&=0XFFFFF0FF;GPIOC->CRH|=0X00000400;} //浮空输入 u8 HD7279_GetKeyVal(void); void HD7279_Init(void); #endif 程序编译没问题,只是读不出按键值。希望大家帮我解决这个问题,是配置的问题?还是其他的问题 |
|
相关推荐
3个回答
|
|
怎么测试DATA_IN啊。我的程序只有进入7279的初始化之后,液晶就什么都不显示了、、、
|
|
|
|
|
|
|
|
搞定了吗?
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1553 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1497 浏览 1 评论
925 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
660 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1551 浏览 2 评论
1846浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
603浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
502浏览 3评论
504浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
486浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 01:28 , Processed in 0.715431 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号