- #include "SmartM_M0.h"
- #define DEBUGMSG printf
- /****************************************
- *函数名称:KeyIntInit
- *输 入:无
- *输 出:无
- *功 能:按键中断初始化
- ******************************************/
- VOID KeyIntInit(VOID)
- {
- P3_PMD=0xFFFF; //准双向模式
- P3_DOUT=0xFF; //输出高电平
- P3_MFP = (P3_MFP & (~P33_EINT1_MCLK)) | EINT1; //P3.2引脚设置为外部中断
-
- DBNCECON &= ~ICLK_ON; //禁用时钟?
- DBNCECON &= DBCLK_HCLK;//防反弹计数器时钟源为 HCLK
- DBNCECON |= SMP_256CK; //设置防反弹采样周期选择
-
- P3_DBEN |= DBEN3; //使能P3.2防反弹功能
-
- P3_IMD &= IMD3_EDG;
- P3_IEN |= IF_EN3; //设置外部中断0为下降沿触发
- NVIC_ISER |= EXT_INT1;
- }
- /****************************************
- *函数名称:main
- *输 入:无
- *输 出:无
- *功 能:函数主体
- ******************************************/
- INT32 main(VOID)
- {
- PROTECT_REG //ISP下载时保护FLASH存储器
- (
- PWRCON |= XTL12M_EN; //默认时钟源为外部晶振
- while((CLKSTATUS & XTL12M_STB) == 0); //等待12MHz时钟稳定
-
- CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M;//设置外部晶振为系统时钟
- )
- UartInit(12000000,9600); //波特率设置为9600bps
- KeyIntInit(); //按键中断初始化
- DEBUGMSG("Init ok\r\b");
- while(1);
- }
- /****************************************
- *函数名称:__KEYISR
- *输 入:无
- *输 出:无
- *功 能:按键中断服务函数
- ******************************************/
- VOID EINT1_IRQHandler(VOID)
- {
- DEBUGMSG("Key int\r\n"); //打印按键中断信息
- P3_ISRC = P3_ISRC; //写1清空
- }
|