#include "timerHz.h"
#include "msp430g2553.h" #define _DEBUG_TIMERHZ_ unsigned int capArray[] = {};
unsigned char index = , flag = ;
float hz = ; /*
* 绝对值
*/
int abs(int x)
{
return x>?x:-x;
} /*
* 系统初始化
*/
void HZ_Init()
{
P1SEL |= BIT1; //P1.1复用
P1DIR &= ~BIT1; //P1.1输入
// P1SEL |= BIT2; //P1.2复用
// P1DIR &= ~BIT2; //P1.2输入 CCTL0 = CM_1 + SCS + CCIS_0 + CAP + CCIE; //上升沿捕获,同步,信号源设置,捕获功能,允许捕获中断
TACTL = TASSEL_2 + MC_2; //定时器的时钟源选择SMCLK(16M),连续计数
} /******************中断服务程序*****************************/
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIME0_A0_ISR(void)
{
capArray[index--] = TA0CCR0;
if(index == )
{
index = ;
TA0CCR0 = ; // 清零计数器
flag = ;
}
} #ifdef _DEBUG_TIMERHZ_
#include "12864.h"
#include "sys.h" void main()
{
double temp = 213.456;
// unsigned char i; System_Init();
LCD_Init();
HZ_Init(); LCD_Show_String("Measure freq:");
LCD_Set_Pos(,);
LCD_Show_Deci(temp);
LCD_Set_Pos(,);
LCD_Show_String("Hz");
LCD_Set_Pos(,); _EINT();
while()
{
if (flag == )
{
// for (i = 0; i<=2; i += 2)
// temp += abs(capArray[i+1] - capArray[i]);
temp = abs(capArray[] - capArray[]);
hz = ((double )())/temp; //1MHZ,1/1000000s = 1us
LCD_Set_Pos(,);
LCD_Show_Deci(hz); //显示
flag = ;
}
}
}
#endif

MSP430之频率测量,误差1Hz的更多相关文章

  1. (原创)基于MCU的频率可调,占空比可调的PWM实现(MCU,MCS-51/MSP430)

    1.Abstract     做这个是受朋友之邀,用在控制电机转动的方面.他刚好在一家好的单位实习,手头工作比较多,无暇分身,所以找我帮忙做个模型.要求很明晰,PWM的频率在0~1KHz范围内,占空比 ...

  2. MSP430 G2553 计时/计数器 Timer_A

    MSP430G2553包含了两个16-bit Timer_A计时/计数器.本文简单介绍了Timer_A的功能和寄存器使用,本文及后续的随笔部分参考了"Scientific Instrumen ...

  3. 石英晶振频率后面带的PPM是什么单位

    PPM是石英晶振的基本单位之一,表示晶振的精度和相对偏差, PPM代表着百万分之一,它表明晶体的频率可能会偏离标称值多少.晶振频率是以MHZ(10的6次方)和KHZ(10的3次方)为基本单位的,标称频 ...

  4. [置顶] STM32 输入捕获的脉冲宽度及频率计算

    输入捕获模式可以用来测量脉冲宽度或者测量频率.STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能.以下是对脉冲宽度及频率的计算. 1.脉冲宽度 如下图所示,采集该高电平脉冲 ...

  5. STM32利用TIM3产生一个1--100Hz可调频率

    目标:利用TIM3结合普通GPIO实现一个1--100HZ的可控频率,误差在0.5HZ以内 核心:要实现该功能首先要明确频率的定义,频率就是1秒内发生周期性变化的次数,例如一个正弦波,1S内,走了15 ...

  6. STM32 输入捕获的脉冲宽度及频率计算

    输入捕获模式可以用来测量脉冲宽度或者测量频率.STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能.以下是对脉冲宽度及频率的计算. 1.脉冲宽度 如下图所示,采集该高电平脉冲 ...

  7. MSP430 LaunchPad开发板入门教程集合

    MSP-EXP430G2开发板是德州仪器提供的开发工具,也称为LaunchPad,用于学习和练习如何使用其微控制器产品.该开发板属于MSP430 Value Line系列,我们可以对所有MSP430系 ...

  8. 应聘linux/ARM嵌入式开发岗位

    **************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...

  9. 脉冲计数功能在ESM335x-Linux主板上的实现

    1.综述 在工业控制中,经常需要获取脉冲信号计数值.频率.周期.占空比等参数.英创嵌入式主板ESM335X系列 Linux系统现已实现外部输入脉冲信号的计数.频率.周期.占空比测量功能. 主要功能及技 ...

随机推荐

  1. wc2016总结

    因为我太弱了,高一才第一次来wc. 前几天讲课,被各种小学微积分和初中高等代数虐,简直naive.只好自己做做bzoj,想着练练模板之类的东西. 考试当天自觉状态不错,翻开试题感觉各种神奇(这难道是串 ...

  2. java开源网站

    1.http://www.java1234.com 2.http://www.2cto.com/Soft/

  3. 【回文串-Manacher】

    Manacher算法能够在O(N)的时间复杂度内得到一个字符串以任意位置为中心的回文子串.其算法的基本原理就是利用已知回文串的左半部分来推导右半部分. 转:http://blog.sina.com.c ...

  4. 8.20 css样式表:样式分类,选择器。样式属性,

    样式表分类: 1.内联样式表, 和html联合显示,例:<p style="font-size:14px;">内联样式表</p> 2.内嵌样式表 作为一个独 ...

  5. lucene 建立索引的过程

    时间 -- ::  CSDN博客 原文 http://blog.csdn.net/caohaicheng/article/details/ 看lucene主页(http://lucene.apach ...

  6. 8. Add the dashboard

    Controller Node: 1. sudo apt-get install apache2 memcached libapache2-mod-wsgi openstack-dashboard   ...

  7. 个人翻译的cedec2010基于物理的光照

    作为自己介绍基于物理渲染计划的一部分,在自己总结和发布的同时,也会翻译一些国外的优秀资料做推广    本文是Tri Ace 在 cedec2010上发布的文章,主要描述了他们基于物理光照的实现方法,这 ...

  8. 记录一个bug -- sprintf

    #include<iostream> #include<stdio.h> int main () { char buf[10] = {0}; sprintf(buf," ...

  9. Happy

    1.delighted 2.over the moon                   Alex is over the moon with promotion. 3.really pleased ...

  10. 一些需要被禁用的php危险函数

    phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 危险等级 ...