123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- 测试tim2定时器
- 说明:
- *1.系统主频为FRC/2.波形输出引脚:P11
- *3.定时模式, 16位定时器定时1ms,中断一次
- */
- #include <intrins.h>
- #include <REGtenxTM52F1386.h>
- #include "TM52F1386_bsp.h"
- #define FRC_HZ 18432000
- #define FRC_DIV 2
- #define CLK_US 1000 //1ms
- #define TIME2_RELOAD (unsigned int)(65536-(((FRC_HZ/FRC_DIV)/2/1000)*CLK_US/1000)) //精度更高
- /**
- ************************/
- //1:time2 16位自动重载定时器 中断方式
- /******************************************************************************************
- ** 函数名称: time2_T_init
- ** 函数描述: time2初始化函数
- ** 输入参数: 无
- ** 输出参数: 无
- *******************************************************************************************/
- void time2_T_init()
- {
- CT2N = 0; //定时器模式
- CPRL2N = 0; //重载模式
- TH2 = (TIME2_RELOAD)/256;
- TL2 = (TIME2_RELOAD)%256;
- RCP2H=(TIME2_RELOAD)/256;
- RCP2L=(TIME2_RELOAD)%256;
- TR2 = 1;
- ET2 = 1;
- }
- /******************************************************************************************
- ** 函数名称: main
- ** 函数描述: main函数
- ** 输入参数: 无
- ** 输出参数: 无
- *******************************************************************************************/
- void main(void)
- {
- bsp_clock_init(); //选择内部FRC/2为系统时钟
-
- time2_T_init();
-
- PORTIDX = PORT1;
- PINMOD10 = PINMOD10&0x0F | PIN_H_MODE_PP; //测试引脚:P1.1,设置为推挽输出
-
- EA=1;
- while(1)
- {
- bsp_delay_ms(100);
- }
- }
- /******************************************************************************************
- ** 函数名称: time2_irq
- ** 函数描述: time2中断处理函数
- ** 输入参数: 无
- ** 输出参数: 无
- *******************************************************************************************/
- void time2_irq() interrupt 5
- {
- if(TF2)
- {
- TF2=0; //除了用作串口的时基外,其他应用必须清零
- P1_1 = ~P1_1; //引脚翻转
- }
- }
|