[DemoCode下载] M051外部中断1使用程序

[复制链接]
 楼主| Roderman_z 发表于 2016-1-17 20:51 | 显示全部楼层 |阅读模式
  1. #include "SmartM_M0.h"
  2. #define DEBUGMSG       printf
  3. /****************************************
  4. *函数名称:KeyIntInit
  5. *输    入:无
  6. *输    出:无
  7. *功    能:按键中断初始化
  8. ******************************************/
  9. VOID KeyIntInit(VOID)
  10. {
  11.     P3_PMD=0xFFFF;        //准双向模式
  12. P3_DOUT=0xFF;        //输出高电平
  13. P3_MFP = (P3_MFP & (~P33_EINT1_MCLK)) | EINT1;  //P3.2引脚设置为外部中断

  14. DBNCECON &= ~ICLK_ON;  //禁用时钟?
  15. DBNCECON &= DBCLK_HCLK;//防反弹计数器时钟源为 HCLK
  16. DBNCECON |= SMP_256CK;        //设置防反弹采样周期选择
  17.             
  18. P3_DBEN |= DBEN3;         //使能P3.2防反弹功能
  19.   
  20. P3_IMD &= IMD3_EDG;   
  21. P3_IEN |= IF_EN3;         //设置外部中断0为下降沿触发
  22. NVIC_ISER |= EXT_INT1;
  23. }
  24. /****************************************
  25. *函数名称:main
  26. *输    入:无
  27. *输    出:无
  28. *功    能:函数主体
  29. ******************************************/
  30. INT32 main(VOID)
  31. {                        
  32.   PROTECT_REG          //ISP下载时保护FLASH存储器
  33.   (
  34.    PWRCON |= XTL12M_EN;       //默认时钟源为外部晶振
  35.    while((CLKSTATUS & XTL12M_STB) == 0);    //等待12MHz时钟稳定
  36.   
  37.    CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M;//设置外部晶振为系统时钟
  38.   )
  39.   UartInit(12000000,9600);       //波特率设置为9600bps
  40.   KeyIntInit();          //按键中断初始化
  41.   DEBUGMSG("Init ok\r\b");
  42.   while(1);
  43. }
  44. /****************************************
  45. *函数名称:__KEYISR
  46. *输    入:无
  47. *输    出:无
  48. *功    能:按键中断服务函数
  49. ******************************************/
  50. VOID EINT1_IRQHandler(VOID)
  51. {
  52.   DEBUGMSG("Key int\r\n");       //打印按键中断信息
  53.   P3_ISRC = P3_ISRC;                        //写1清空
  54. }      


ofsummer 发表于 2016-1-18 20:35 | 显示全部楼层
有没有遇到过外部IO中断和定时器中断冲突的问题的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

354

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部