资源简介
msp430g2553测频的程序,对初学者有一定的帮助,适合刚刚接触的同学
代码片段和文件信息
/*
* 实验不是很成功,捕获仍有问题,理论是正确的,但仍存在误触发,有时一个下降沿触发多次,有时会漏过一个沿
* 如果只是单纯捕获周期还行
* main.c
*/
#include “msp430g2553.h“
#define CPUCLK 1000000
float FreqDuty;
unsigned int intcnt=0capcnt=0;
unsigned int Cap_Result[3]Buff1Buff2;
unsigned char keypress = 0;
void BasicClock_Init(void)
{
//设置时钟源
if(CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)
{
while(1);
}
BCSCTL1 = CALBC1_1MHZ; //DCO ---1MHz
DCOCTL = CALDCO_1MHZ;
BCSCTL3 |= LFXT1S_0; //LFXT1 ---32768Hz
IFG1 &= ~OFIFG; // Clear OSCFault flag
//设置时钟,ACLK=32768,MCLK=1M
BCSCTL2 |= SELM_0 + DIVM_0;
}
void GPIO_Init(void)
{
//configure LED
P1DIR |= BIT0 + BIT6;
P1OUT |= BIT0 + BIT6;
//configure Timer1 CCI2A Pin TA1.2--P2.4功能选择010 Datasheet Page51
P2DIR &=~BIT4;
P2SEL |= BIT4;
P2SEL2 &=~BIT4;
}
void Timer_Init(void)
{
//1MHz连续计数模式,捕获间隔为1us--65.535ms即输入频率在15.3Hz~1MHz之间
TA1CTL = TASSEL_2 + MC_2 + TACLR;;
//采用TA1.2引脚做捕获输入上升、下降都捕获,捕获模式、开CCI中断
TA1CCTL2 = CM_3+CCIS_0+CAP+CCIE;
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BasicClock_Init();
GPIO_Init();
Timer_Init();
_bis_SR_register(GIE);
while(1);
}
#pragma vector = TIMER1_A1_VECTOR
__interrupt void Timer1_A1_ISR(void)
{
switch(__even_in_range(TA1IV10))
{
case 2: // TA0CCR1 CCIFG
P1OUT ^=BIT0+BIT6;
break;
case 4: // TA0CCR2 CCIFG
Cap_Result[capcnt ++] = TA1CCR2;
if(capcnt == 3)
{
capcnt = 0;
Buff1 = (Cap_Result[2]-Cap_Result[0] > 0)?(Cap_Result[2]-Cap_Result[0]):(65535-Cap_Result[0]+Cap_Result[2]);
Freq =1000000 *1.0 /Buff1;
if(TA1CCTL2 & CCI == 1)
Buff2 = (Cap_Result[1]-Cap_Result[0] > 0)?(Cap_Result[1]-Cap_Result[0]):(65535-Cap_Result[0]+Cap_Result[1]);
else
Buff2 = (Cap_Result[2]-Cap_Result[1] > 0)?(Cap_Result[2]-Cap_Result[1]):(65535-Cap_Result[1]+Cap_Result[2]);
Duty = Buff2*1.0/Buff1;
if(Freq < 10000)
P1OUT &= ~BIT0;
else
P1OUT |= BIT0;
if(Duty < 0.5)
P1OUT &=~BIT6;
else
P1OUT |= BIT6;
}
break;
case 10: // TA0IFG
P1OUT ^=BIT0;
break;
default:
break;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-07-14 09:05 TimerA_Capture\
文件 490 2012-09-24 13:39 TimerA_Capture\.ccsproject
文件 17857 2012-09-24 13:39 TimerA_Capture\.cproject
文件 2579 2012-09-24 13:39 TimerA_Capture\.project
目录 0 2013-07-14 09:05 TimerA_Capture\.settings\
文件 93 2012-09-24 13:39 TimerA_Capture\.settings\org.eclipse.cdt.codan.core.prefs
文件 154 2012-09-24 13:39 TimerA_Capture\.settings\org.eclipse.cdt.debug.core.prefs
文件 239 2012-09-25 00:01 TimerA_Capture\.settings\org.eclipse.core.resources.prefs
目录 0 2013-07-14 09:05 TimerA_Capture\Debug\
文件 11147 2013-04-02 15:03 TimerA_Capture\Debug\TimerA_Capture.map
文件 18331 2013-04-02 15:03 TimerA_Capture\Debug\TimerA_Capture.out
文件 49 2013-04-12 15:47 TimerA_Capture\Debug\ccsObjs.opt
文件 12 2013-04-12 15:47 TimerA_Capture\Debug\ccsSrcs.opt
文件 7962 2013-04-02 15:03 TimerA_Capture\Debug\main.obj
文件 311 2013-04-02 15:03 TimerA_Capture\Debug\main.pp
文件 3297 2013-04-12 15:47 TimerA_Capture\Debug\makefile
文件 268 2013-04-12 15:47 TimerA_Capture\Debug\ob
文件 1811 2013-04-12 15:47 TimerA_Capture\Debug\sources.mk
文件 832 2013-04-12 15:47 TimerA_Capture\Debug\subdir_rules.mk
文件 513 2013-04-12 15:47 TimerA_Capture\Debug\subdir_vars.mk
文件 822 2012-09-24 13:39 TimerA_Capture\MSP430G2553.ccxm
文件 4912 2012-09-24 13:39 TimerA_Capture\lnk_msp430g2553.cmd
文件 2172 2012-09-25 09:45 TimerA_Capture\main.c
- 上一篇:msp430g2553测频率
- 下一篇:微票-微信小程序源码
相关资源
- msp430g2553测频率
- 基于msp430g2553的触摸按键程序
- MSP430G2553例程代码
- msp430G2553调用库
- MSP430G25534个简单的小程序
- msp430G2553直流电机控制PWM调速和正反转
- MSP430G2553驱动DHT11温湿度传感器
- msp430g2553单片机定时器中断例程
- MSP430利用定时器测频率
- MSP430G2553和DS1302时钟程序
- 51单片机 等精度测频率 LCD显示 C程序
- Nokia5110的程序在msp430G2553上可以
- LaunchPad(MSP430G2553)_官方例程
- MSP430g2553 读写Flash以及串口通讯
- STM32F4测频率、占空比工程
- msp430g2553液晶显示程序
- MSP430G2553程序库
- MSP430G2553超声波测距程序
- MSP430G2553使用IIC协议控制OLED显示屏
- msp430g2553红外遥控小程序
- msp430g2553循迹小车控制程序
- 基于MSP430G2553的蜂鸣器
- MSP430G2553寄存器资料
- MSP430G2553 ADC10测试
- LaunchPad MSP430G2553 官方例程 汉语注释
- 利用msp430g2553进行串口通信
- MSP430G2553串口程序
- 基于FPGA的采用等精度测频原理的频率
- msp430g2553串行控制12864显示正弦波。
- MSP430G2553的DAC7811程序
评论
共有 条评论