- #include "SmartM_M0.h"
- bool flag = 0; //中断标志位
- /****************************************
- *函数名称:TMR2Init
- *输 入:无
- *输 出:无
- *功 能:定时器2初始化
- ******************************************/
- VOID TMR2Init(VOID)
- {
- PROTECT_REG
- (
- /* 使能TMR2时钟源 */
- APBCLK |= TMR2_CLKEN;
- /* 选择TMR2时钟源为外部晶振12MHz */
- CLKSEL1 = (CLKSEL1 & (~TM2_CLK)) | TM1_12M;
- /* 复位TMR2 */
- IPRSTC2 |= TMR2_RST;
- IPRSTC2 &= ~TMR2_RST;
- /* 选择TMR2的工作模式为周期模式*/
- TCSR2 &= ~TMR_MODE;
- TCSR2 |= MODE_PERIOD;
- /* 溢出周期 = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
- /* 溢出周期 = (1/12MHz) * (0 + 1) * (12000*500)=500ms (0.5S)*/
- TCSR2 = TCSR2 & 0xFFFFFF00; // 设置预分频值 [0~255]
- TCMPR2 = 12000*500; // 设置比较值 [0~16777215]
- TCSR2 |= TMR_IE; //使能TMR0中断
- NVIC_ISER |= TMR2_INT;
- TCSR2 |= CRST; //复位TMR0计数器
- TCSR2 |= CEN; //使能TMR0
- )
- }
- /****************************************
- *函数名称:main
- *输 入:无
- *输 出:无
- *功 能:函数主体
- ******************************************/
- INT32 main(VOID)
- {
- u8 i =0;
- PROTECT_REG //ISP下载时保护FLASH存储器
- (
- PWRCON |= XTL12M_EN; //默认时钟源为外部晶振
- while((CLKSTATUS & XTL12M_STB) == 0); //等待12MHz时钟稳定
- CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟
- P2_PMD = 0x5555; //P2口设置为输出模式
- P2_DOUT= 0x00; //P2口输出低电平
- )
- TMR2Init();
- while(1)
- {
- if(flag)
- {
- flag = 0;
- i++;
- }
- if(i>7)
- {
- i = 0;
- }
- P2_DOUT = 1UL<<i; //P2口输出相应的电平
- }
- }
- /****************************************
- *函数名称:TMR2_IRQHandler
- *输 入:无
- *输 出:无
- *功 能:定时器2中断服务函数
- ******************************************/
- VOID TMR2_IRQHandler(VOID)
- {
- /* 清除TMR1中断标志位 */
- TISR2 |= TMR_TIF;
- flag = 1;
- }
|