STM8的按键程序学习笔记.pdf

STM8的按键程序学习笔记.pdf

ID:57338546

大小:178.64 KB

页数:6页

时间:2020-08-12

STM8的按键程序学习笔记.pdf_第1页
STM8的按键程序学习笔记.pdf_第2页
STM8的按键程序学习笔记.pdf_第3页
STM8的按键程序学习笔记.pdf_第4页
STM8的按键程序学习笔记.pdf_第5页
资源描述:

《STM8的按键程序学习笔记.pdf》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、STM8的按键程序学习笔记本程序基于STM8S105K4单片机学习程序。程序硬件就是STM8的最小开发板搭建,用的内部晶振1分频。经测试可以正常检测到按键的短按和长按。程序思想见。C程序中的注释。最终通过调试和实验。所有的程序如下:(程序中可能还有些其他没有发现的问题,或其他错误有问题再学习更改。)///////**********按键扫描程序********///////*本程序定义四个独立按键,对四个独立按键的短按长按进行识别,返回最终的键值key_value为最终键值:0x11为按键1的短按,0x12为按键的长按。0x21为按键2的短按,0x2

2、2为按键的长按。类推注意:键值读取之后应将键值复位清零,以备下次检测;注意:系统中断函数中有按键扫描的部分程序INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler,4)等。调用方法:voidkey_port_init();//按键端口的定义voidscan_key();//按键的扫描程序,放在定时器中断中,定时器1ms中断。externunsignedcharkey_down_IF=0x00;//在中断函数中加入变量声明externscan_key();//在中断函数中加入变量声明externkey_value;//在主函数

3、中加入变量声明*/#ifndef__KEY_SCAN_H#define__KEY_SCAN_H/*定义按键的端口位*/#definekey_1_ioGPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_IN_PU_IT)#definekey_2_ioGPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_IN_PU_IT)#definekey_3_ioGPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_IN_PU_IT)#definekey_4_ioGPIO_Init(GPIOC,GPIO_

4、PIN_7,GPIO_MODE_IN_PU_IT)//#definekey_1_in(){(GPIO_ReadInputPin(GPIOC,GPIO_PIN_5)==SET)?1:0}/*设置端口按键中断的触发方式下降沿和低电平触发*/#definekey_int_wayEXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC,EXTI_SENSITIVITY_FALL_ONLY);//#definekey_short0x01;//定义短按键值,按键按下后根据按键1号按键短按最终键值为0x11,长按为0x12.类推//#de

5、finekey_long0x02;//定义长按键值,//#definekey_short0x01;//#definekey_short0x01;unsignedcharkey_value=0;//定义一个键值变量。unsignedcharkey_down_IF=0x00;//按键按下标志位,0x10代表key1按下标志,0x20为key2按下,0x30为key3按下。unsignedintkey_delay_count=0;//按键延时计数器unsignedintkey_delay_short=100;//定义短按延时判断时间unsignedintk

6、ey_delay_long=1000;//定义长按的延时判断时间/*读取按键的位值*/unsignedcharkey_1_in(){if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_4))return1;elsereturn0;}unsignedcharkey_2_in(){if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_5))return1;elsereturn0;}unsignedcharkey_3_in(){if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_6))return1

7、;elsereturn0;}unsignedcharkey_4_in(){if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_7))return1;elsereturn0;}#endif///////**********按键扫描程序********///////*建档时间:20151215跟新记录:20151218测试通过。注意事项:调试中遇到的问题有:按键的键值读取函数unsignedcharkey_1_in();等本来是准备放在宏定义里面的,但是总是报错有问题。所以放在函数中。导致不能直接在其他程序中包含这个头文件。程序思想:

8、按键按下后进入中断,然后判断是哪个按键按下,并赋值。当有按键按下后按键按下标志位会被置位,然后在定时器的中断

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。