在线时间828 小时
UID3079326
注册时间2015-2-11
NXP金币29
TA的每日心情 | 奋斗 2025-5-7 09:07 |
---|
签到天数: 353 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 5786
- 最后登录
- 2025-5-7
|
本帖最后由 wambob 于 2015-11-7 20:31 编辑
- <P> </P>
- <DIV class=blockcode>
- <BLOCKQUOTE>/************************************************************************
- *例程功能:
- * 实现扩展板上按键K4按键按下、弹起的检测功能,模拟脉冲。
- * K4键控制LD4,LD3,按下K4时,翻转LD4,弹起K4时,翻转LD3。
- * 串口以9600波特率打印:2-KEY demo!
- *注意K3和FRDM板上MMA8451Q INT2共用,若用扩展板K3按键,需要去掉FRDM板上R26电阻
- *************************************************************************/
- #include <stdio.h>
- #include <string.h>
- #include "gpio.h"
- #include "common.h"
- #include "uart.h"
- /* LED pin */
- #define LED0_PORT HW_GPIOB
- #define LED0_PIN 11
- #define LED1_PORT HW_GPIOB
- #define LED1_PIN 10
- /*KEY pin */
- #define KEY3_PORT HW_GPIOA
- #define KEY3_PIN 12 //PTA1接K4按键
- int main(void)
- {
- /* 开机延时 */
- DelayInit();
- /* LED */
- GPIO_QuickInit(LED0_PORT, LED0_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED1_PORT, LED1_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED2_PORT, LED2_PIN, kGPIO_Mode_OPP);
- GPIO_QuickInit(LED3_PORT, LED3_PIN, kGPIO_Mode_OPP);
- /* KEY */
- GPIO_QuickInit(KEY3_PORT, KEY3_PIN, kGPIO_Mode_IPU);
- /* UART 初始化 */
- UART_QuickInit(UART0_RX_B2_TX_B1, 9600);
- printf("2-KEY demo!\r\n");
- GPIO_ITDMAConfig(KEY3_PORT, 12, kGPIO_IT_RisingFallingEdge, true); //中断使能,配置为上升下降沿中断
- while(1)
- {
- }
- }
复制代码
GPIO.c中修改中断服务
- void PORTA_IRQHandler(void)
- {
- if(PORTA_ISFR == (1<<12)) //KEY4 PTA12 上升下降沿中断
- {
- PORTA_PCR12 |= PORT_PCR_ISF_MASK; //清除中断标志
- if( GPIOA_PDIR & (1 <<12) ) // KEY4弹起,
- {
- GPIO_ToggleBit( HW_GPIOB, 11); //翻转LD4
- }
- else // KEY4按下,
- {
- GPIO_ToggleBit( HW_GPIOB, 10); //翻转LD3
- }
- }
- }
复制代码
|
评分
-
查看全部评分
|