• 单片机TM4C123学习(四):频率计


    1.#define的使用

    #define SQUARE_DUTY 0.5

    2.FPU的开启:浮点运算

    FPUEnable();
    FPULazyStackingEnable();

    3.定时器初始化

        //
        // Timer init
        //        
          SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);   //使能外设
          TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);//周期计时模式

    两个步骤:外部设备使能,设置定时器的类型

    4.定时周期设置

        //
        // Timer delay period 
        //    
          ui32Period = (SysCtlClockGet()/4/83000);                //设置计数上限,这里的设置可以产生83kHz的信号
          TimerLoadSet(TIMER0_BASE, TIMER_A, ui32Period -1);      //设置计数范围

    这里因为占空比是25%,所以/4,如果占空比是50%,那么/2。

    SysCtlClockGet()获得的是系统的频率,也就是40*1000*1000,一个定时周期中灯只能选择暗或者亮,持续时间为1s,所以一暗一亮构成一个周期2s,f=0.5。
    SysCtlClockGet()*f=20M,用20M/想要获得的频率,就是ui32Period的值。

    5.定时器中断设置
    //
    // interrupt enable--timer0A
    //
       IntEnable(INT_TIMER0A);                            //在系统层使能定时器中断
       TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);   //允许处理某个定时器的中断请求
    IntMasterEnable();   //使能系统总中断开关
    TimerIntRegister(TIMER0_BASE, TIMER_BOTH, Timer0IntHandler); //注册中断处理函数
    void Timer0IntHandler(void)
    {
        // 清除定时器中断标志位
        TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
    if(k==0)
    {
    GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, 1<<4);
    }
    else
    {
    GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, 0<<4);
    }
    k++;
    if(k==4)
    {
        k=0;
    }
    }

    6.开启定时器

        //
        // timer0 enable--This will start the timer and interrupts
        //        
            TimerEnable(TIMER0_BASE, TIMER_A);

     7.不知道为什么需要这个,是为了提高精度?

    // 建立并使能系统滴答定时器,作为延时循环的时钟参考(1s)(秒级延时不准确)
    ROM_SysTickPeriodSet(ROM_SysCtlClockGet()); //设置SysTick计数器的周期值
    ROM_SysTickEnable(); //使能SysTick计数器,开始倒计数

    8.




  • 相关阅读:
    Spring 事务管理tx,aop
    好的博客参考之Spring
    Spring 事务管理
    Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
    ssm框架搭建
    SSH整合不错的博客
    org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.my.service.ProductService] for bean with name 'productService' defi报错解决方法
    修改firefox的默认缩放比
    深入理解计算机系统笔记
    OnePlus5刷机后一直检查更新
  • 原文地址:https://www.cnblogs.com/pursuit1996/p/4912869.html
Copyright © 2020-2023  润新知