[DemoCode下载] M051定时器2程序

[复制链接]
 楼主| 风的样子 发表于 2016-2-22 19:05 | 显示全部楼层 |阅读模式
  1. #include "SmartM_M0.h"
  2. bool flag = 0; //中断标志位
  3. /****************************************
  4. *函数名称:TMR2Init
  5. *输    入:无
  6. *输    出:无
  7. *功    能:定时器2初始化
  8. ******************************************/
  9. VOID TMR2Init(VOID)
  10. {
  11.     PROTECT_REG
  12. (
  13.   /* 使能TMR2时钟源 */
  14.      APBCLK |= TMR2_CLKEN;
  15.   /* 选择TMR2时钟源为外部晶振12MHz */
  16.   CLKSEL1 = (CLKSEL1 & (~TM2_CLK)) | TM1_12M;  
  17.   /* 复位TMR2 */
  18.   IPRSTC2 |=  TMR2_RST;
  19.   IPRSTC2 &= ~TMR2_RST;
  20.   /* 选择TMR2的工作模式为周期模式*/
  21.   TCSR2 &= ~TMR_MODE;
  22.   TCSR2 |=  MODE_PERIOD;  
  23.   /* 溢出周期 = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
  24.   /* 溢出周期 = (1/12MHz) * (0 + 1) * (12000*500)=500ms (0.5S)*/
  25.   TCSR2  = TCSR2 & 0xFFFFFF00;  // 设置预分频值 [0~255]
  26.   TCMPR2 = 12000*500;        // 设置比较值 [0~16777215]
  27.   TCSR2 |= TMR_IE;     //使能TMR0中断
  28.   NVIC_ISER |= TMR2_INT;
  29.   TCSR2 |= CRST;      //复位TMR0计数器   
  30.   TCSR2 |= CEN;      //使能TMR0
  31. )
  32. }
  33. /****************************************
  34. *函数名称:main
  35. *输    入:无
  36. *输    出:无
  37. *功    能:函数主体
  38. ******************************************/
  39. INT32 main(VOID)
  40. {
  41.   u8 i =0;
  42.      PROTECT_REG            //ISP下载时保护FLASH存储器
  43.   (      
  44.    PWRCON |= XTL12M_EN;      //默认时钟源为外部晶振
  45.    while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz时钟稳定      
  46.    CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟
  47.    P2_PMD = 0x5555;       //P2口设置为输出模式
  48.       P2_DOUT= 0x00;        //P2口输出低电平
  49.   )
  50.   TMR2Init();
  51.     while(1)
  52.   {
  53.    if(flag)
  54.   {
  55.    flag = 0;
  56.    i++;
  57.   }
  58.   if(i>7)
  59.   {
  60.    i = 0;
  61.   }
  62.   P2_DOUT = 1UL<<i;         //P2口输出相应的电平
  63.   }
  64. }
  65. /****************************************
  66. *函数名称:TMR2_IRQHandler
  67. *输    入:无
  68. *输    出:无
  69. *功    能:定时器2中断服务函数
  70. ******************************************/
  71. VOID TMR2_IRQHandler(VOID)
  72. {
  73. /* 清除TMR1中断标志位 */
  74. TISR2 |= TMR_TIF;
  75. flag = 1;
  76. }


Rooney30 发表于 2016-2-26 22:32 | 显示全部楼层
新唐单片机中的adc可不可以用定时器作为触发源?
ofsummer 发表于 2016-2-27 20:45 | 显示全部楼层
Rooney30 发表于 2016-2-26 22:32
新唐单片机中的adc可不可以用定时器作为触发源?

我用过stm32的,是可以用定时器触发的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

247

帖子

1

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

25

主题

247

帖子

1

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