[DemoCode下载] M051定时器3 周期模式测试程序

[复制链接]
 楼主| 芙蓉洞 发表于 2016-2-17 20:25 | 显示全部楼层 |阅读模式
  1. #include "SmartM_M0.h"
  2. UINT32 i =0;
  3. /****************************************
  4. *函数名称:TMR3Init
  5. *输    入:无
  6. *输    出:无
  7. *功    能:定时器3初始化
  8. ******************************************/
  9. VOID TMR3Init(VOID)
  10. {
  11.     PROTECT_REG
  12. (
  13.   /* 使能TMR0时钟源 */
  14.      APBCLK |= TMR3_CLKEN;
  15.   /* 选择TMR0时钟源为外部晶振12MHz */
  16.   CLKSEL1 = (CLKSEL1 & (~TM3_CLK)) | TM0_12M;
  17.   /* 复位TMR3 */
  18.   IPRSTC2 |=  TMR3_RST;
  19.   IPRSTC2 &= ~TMR3_RST;
  20.   /* 选择TMR3的工作模式为周期模式*/
  21.   TCSR3 &= ~TMR_MODE;
  22.   TCSR3 |=  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.   TCSR3  = TCSR3 & 0xFFFFFF01;  // 设置预分频值 [0~255]
  26.   TCMPR3 = 12000*500;        // 设置比较值 [0~16777215]
  27.   TCSR3 |= TMR_IE;     //使能TMR0中断
  28.   NVIC_ISER |= TMR3_INT;
  29.   TCSR3 |= CRST;      //复位TMR0计数器   
  30.   TCSR3 |= CEN;      //使能TMR0
  31. )
  32. }
  33. /****************************************
  34. *函数名称:main
  35. *输    入:无
  36. *输    出:无
  37. *功    能:函数主体
  38. ******************************************/
  39. INT32 main(VOID)
  40. {
  41.      PROTECT_REG            //ISP下载时保护FLASH存储器
  42.   (      
  43.    PWRCON |= XTL12M_EN;      //默认时钟源为外部晶振
  44.    while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz时钟稳定      
  45.    CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟
  46.    P2_PMD = 0x5555;       //P2口设置为输出模式
  47.       P2_DOUT= 0x00;        //P2口输出低电平
  48.   )
  49.   TMR3Init();  
  50.   while(1)
  51.   {
  52.    if(i > 7)
  53.    {
  54.       i = 0;
  55.    }
  56.   }
  57. }
  58. /****************************************
  59. *函数名称:TMR3_IRQHandler
  60. *输    入:无
  61. *输    出:无
  62. *功    能:定时器3中断服务函数
  63. ******************************************/
  64. VOID TMR3_IRQHandler(VOID)
  65. {
  66. /* 清除TMR3中断标志位 */
  67. TISR3 |= TMR_TIF;
  68.     P2_DOUT = 1UL<<i;         //P2口输出相应的电平
  69. i++;
  70. }


仙女山 发表于 2016-2-18 16:50 | 显示全部楼层
这个定时器是不是和PWM一起使用呢
Roderman_z 发表于 2016-2-19 19:54 | 显示全部楼层
为什么我的PWM低电平比较高呢,都快1V了
huangcunxiake 发表于 2016-2-20 09:38 | 显示全部楼层
Roderman_z 发表于 2016-2-19 19:54
为什么我的PWM低电平比较高呢,都快1V了

是不是要对端口搞个下拉电阻。
Mancherstun 发表于 2016-2-21 13:02 | 显示全部楼层
我用PWM模式,为啥低电平将近1V呢,负载情况怎么样
侣行天下 发表于 2016-2-22 19:35 | 显示全部楼层
我现在用的st的pwm,必须下拉一个电阻才能将低电平拉下来
Rooney30 发表于 2016-2-26 22:31 | 显示全部楼层
有周期模式是不是还有单次模式啊,和ucos ii中的定时器的概念类似
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

398

帖子

3

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