📄 df_timera.c
字号:
/*****************************************************************************\
时器A定时,产生中断,输出锯齿波和正弦波
使用TACTL0
工作模式:增计数模式
定时器时钟源:MCLK 8MHz
\*****************************************************************************/
#include"math.h"
signed int* h;
unsigned int fr=60;
/*****************************************************************************
初始化
*****************************************************************************/
void TimerAInit()
{
TACTL=TASSEL_2; //选择时钟源为 MCLK
h=(signed int*)0xf100; //在此初始化正弦列表的头指针
TACCTL0 = CCIE; //允许定时器中断
}
/*****************************************************************************
打开或关闭定时器
doit: 0:停止 100:运行 ti: 定时时间
*****************************************************************************/
void GotimeDfA(unsigned char doit,unsigned int ti)
{
if(doit==100)
{
TACCR0=ti; //设置定时时间
TACTL |= MC_1+TACLR; //打开定时器
}
else if(doit==0)
{
TACTL &= ~MC0; //关闭定时器
}
}
/****************************************************************************************
向FLASH写入正弦列表
开头地址为 adrs ,写入一个周期共628个值
********************************************************************************************/
void write(unsigned int adrs)
{
signed int* adr;
int i;
float k;
FCTL2=FWKEY+FSSEL0+FN0;
adr=(signed int *)adrs;
FCTL1=FWKEY+ERASE;
FCTL3=FWKEY;
*adr=0;
FCTL1=FWKEY+WRT;
k=0;
for(i=0;i<629;i++)
{
*adr++=(signed int)((sin(k))*2048);
k=k+0.01;
}
}
/*****************************************************************************
捕获/比较0中断
*****************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
//捕获/比较0中断
if(h<(signed int*)0XF4E6)
{
h++;
}
else
{
h=(signed int*)0xf000;
}
get_data=ftw_fm+(*h)*add_fm;
send_data[2]=(unsigned char )get_data;
send_data[3]=(unsigned char )(get_data>>8);
send_data[4]=(unsigned char )(get_data>>16);
send_data[5]=(unsigned char )(get_data>>24);
send(6, FTW1,send_data);
if(P2IFG&BIT4)
{
GotimeDfA(0,100);
}
P2IFG=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -