资源简介
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以4线SPI方式控制0.96寸OLED
- 基于stm32和FPGA测频测相程序
- MSP430G2553快速入门教程
- 基于MSP430G2553的简易频率计
- 基于MSP430的万年历资料
- FPGA等精度测频法 ISE下verilog实现
- STM32测输入信号频率
- stm32f1 测量频率 脉冲参量测试仪 只能
- MSP430G2553_LauchPad及IAR和Proteus使用指南
- 32F103测频
- MSP430G2553及扩展板使用指导书及例程从
- STM32F1输入捕获测频率
- 测量频率及占空比的频率计设计
- 基于MSP430G2553和NRF24L01的DS1302时钟程序
- msp430g2553中文数据手册.pdf
- STM32F7等精度测量频率程序
- 2015电赛F题频率计FPGA等精度测频veri
- 基于FPGA的数字频率计 测频,测占空
- 采用MSP430采集频率 430测频
- MSP430G2553的时钟系统初始化及PWM的呼吸
- MSP430g2553单片机实现的输出三路PWM,
- ssd1306驱动12864OLED显示屏msp430g2553函数
- msp430G2553的4*4矩阵键盘程序文本
- MSP430G2553的8*8点阵
- msp430g2553控制的简易交通灯
- msp430g2553 AD采集 单通道多次采集
- MSP430G2553 DAC+ADC 简单应用,用nokia 51
- STM32F103测频率
- 基于MSP430G2553的电压表设计
评论
共有 条评论