蓝牙4.0开发之CC2541定时器使用

本文介绍了一个基于定时器模块的初始化配置方法及其实现的中断服务程序。通过设置定时器控制寄存器、计数器和比较寄存器,实现了每达到1000个计数周期中断一次的功能,并在中断服务程序中更新了LED的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unsigned short timer_count = 0;

void timer1_init(void)
{
	T1CTL = 0x00;
    T1CTL |= 0xEB; // Set T3 control register: SysClk/32, enable interrupt, run in module mode
	T1CNTL = 0x00; //复位计数器
	T1CCTL0 &= ~0x04;
	T1CC0L = 0xe8;  //计时到1000中断
	T1CC0H = 0x03;
    IEN1 |= (1<<1); // register timer 1 interrupt
}

void timer1_start_free(void)
{
	T1CTL |= 0x01;
}

void timer1_start_module(void)
{
	T1CTL |= 0x02;
}

void timer1_start_eachside(void)
{
	T1CTL |= 0x03;
}

void timer1_stop(void)
{
	T1CTL &= ~0x03;

}
static bool test_led= 0;
_PRAGMA (vector=T1_VECTOR)

__interrupt void T1_ISR (void)

{

	
	if(timer_count > 1000)
	{
		timer_count = 0;
		test_led = !test_led;
		HalLedSet(HAL_LED_1,test_led);
	}
	timer_count++;
  // clear interrupt flag
	IRCON &= ~0x02;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值