⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_timer.c

📁 个人移植的陈明计先生的small_rtos_MSP430版
💻 C
字号:
/*******************************************************************************************
**                             Copyright (c) 2005,上海琪普
**                                 All rights reserved.
**
------------------------文件信息------------------------------------------------------------
**  文件名  :	basic_timer.h
**  创建人  :	潘浩
**  创建日期:	2005-10-7
**  描述    :	通用模块, 声明调用Basic Timer模块的接口函数
**  单片机  :   MSP430F427, 同样适用于有Basic Timer模块的MSP430系列单片机
**
--------------------------------------------------------------------------------------------
**
------------------------当前版本信息--------------------------------------------------------
**  当前版本:	v1.0
**  修改者  :	潘浩
**  修改日期:	2005-10-7
**
--------------------------------------------------------------------------------------------
**  当前版本:   v1.1
**  修改者  :   刘青松
**  修改日期:   2006-1-19
**  修改内容:   修改了有时Basic Timer不启动的bug,并通过新单片机MSP430F4270的验证
**
--------------------------------------------------------------------------------------------
*******************************************************************************************/


#include "config.h"
#include "basic_timer.h"

/*******************************************************************************************
**  函数名称:	InitBasicTimer
**  功能描述:	初始化BasicTimer模块, 采用32768Hz的辅助系统时钟ACLK, 为LCD提供基准时钟,
**              并可设定为实时时钟, 指定中断周期
**  输入	:	cycle - 中断周期, 以ms为单位, 可以1/2/4/8/125/250/500/1000中选择一个, 为0表示关闭中
**  输出	:	无
**  全局变量:	无
**  调用模块:	无
*******************************************************************************************/
void InitBasicTimer(unsigned int cycle)
{
	BTCTL &= 0x18;		// 把除了LCD相关控制位全部清零
	BTCTL |= BT_fCLK2_ACLK_DIV256;		// 指定ACLK为Basic Timer模块的时钟源, 不分频

	if ( cycle == 0 )
	{
		BTCTL |= BTHOLD;	// 停止 Basic Timer
		IE2 &= ~BTIE;		// 如果cycle为0, 则关中断
		return;
	}

	if ( cycle < 2 )
	{
		BTCTL |= BT_ADLY_1;
	}
	else if ( cycle < 4 )
	{
		BTCTL |= BT_ADLY_2;
	}
	else if ( cycle < 8 )
	{
		BTCTL |= BT_ADLY_4;
	}
	else if ( cycle < 16 )
	{
		BTCTL |= BT_ADLY_8;
	}
	else if ( cycle < 32 )
	{
		BTCTL |= BT_ADLY_16;
	}
	else if ( cycle < 64 )
	{
		BTCTL |= BT_ADLY_32;
	}
	else if ( cycle <  125)
	{
		BTCTL |= BT_ADLY_64;
	}
	else if ( cycle < 250 )
	{
		BTCTL |= BT_ADLY_125;
	}
	else if ( cycle < 500 )
	{
		BTCTL |= BT_ADLY_250;
	}
	else if ( cycle < 1000 )
	{
		BTCTL |= BT_ADLY_500;
	}
	else
	{
		BTCTL |= BT_ADLY_1000;
	}

	BTCTL &= ~BTHOLD;	// 启动 Basic Timer
	IE2 |= BTIE;		// 开中断
}

/******************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -