📄 basic_timer.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 + -