微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3200 定时器 每秒产生一次中断

CC3200 定时器 每秒产生一次中断

时间:10-02 整理:3721RD 点击:

请教一下TI的工程师, 

CC3200 定时器可以每秒产生一次中断吗? 我想简单维持一个 时间(每10分钟从服务器获取正确时间,进行校准)

比如,希望执行一个功能, 5s后,再继续执行另一个功能。

因为程序中,有网络接收,和几个Task, 所有这个时间定时器中断应简单点,只处理每秒的中断函数, 其他时间碎片 交给其他Task处理。

不考虑功耗

参考官方的Timer例程

//
// Base address for first timer
//
g_ulBase = TIMERA0_BASE; //定时器0
//
// Base address for second timer
//
g_ulRefBase = TIMERA1_BASE; //定时器1
//
// Configuring the timers
// TIMER_CFG_PERIODIC-32位宽度 TimerA0/TimerA1的设置值都是TIMER_A 0不分频
// 注意预分频值只对16位定时器有效,对32位定时器无效!
// TRM-When using Timer A and Timer B in concatenated mode, only the Timer A control and status bits must be used 当采用32位时仅有TimeA控制标志位有效!因此-->TIMER_A
Timer_IF_Init(PRCM_TIMERA0, g_ulBase, TIMER_CFG_PERIODIC, TIMER_A, 0); //其实 TIMER_A并未起作用,其传递的函数是分频函数,对32位定时器无效!
Timer_IF_Init(PRCM_TIMERA1, g_ulRefBase, TIMER_CFG_PERIODIC, TIMER_A, 0);

//
// Setup the interrupts for the timer timeouts.
//
Timer_IF_IntSetup(g_ulBase, TIMER_A, TimerBaseIntHandler);
Timer_IF_IntSetup(g_ulRefBase, TIMER_A, TimerRefIntHandler);

//
// Turn on the timers feeding values in mSec
//
Timer_IF_Start(g_ulBase, TIMER_A, 500);
Timer_IF_Start(g_ulRefBase, TIMER_A, 1000);

//*****************************************************************************
//
//! The interrupt handler for the first timer interrupt.
//!
//! \param None
//!
//! \return none
//
//*****************************************************************************
void
TimerBaseIntHandler(void)
{
//
// Clear the timer interrupt.
//
Timer_IF_InterruptClear(g_ulBase);

g_ulTimerInts ++;
GPIO_IF_LedToggle(MCU_GREEN_LED_GPIO);
}

//*****************************************************************************
//
//! The interrupt handler for the second timer interrupt.
//!
//! \param None
//!
//! \return none
//
//*****************************************************************************
void
TimerRefIntHandler(void)
{
//
// Clear the timer interrupt.
//
Timer_IF_InterruptClear(g_ulRefBase);

g_ulRefTimerInts ++;
GPIO_IF_LedToggle(MCU_RED_LED_GPIO);
}

谢谢回复, 我看到用RTC 实现定时的功能, 会不会更好一点?

附件是一个demo。

也可以使用RTC,注意外接32768的晶体,用于提供时钟

用的是CC3200模块, 应该有 32768晶振吧?

https://item.taobao.com/item.htm?spm=a230r.1.14.41.ebb2eb2BtZWVw&id=42127103300&ns=1&abbucket=8#detail

是的, 32768晶振。

谢谢回复。

为什么没有一个RTC的例子了?  

对于程序生命周期中,一直维持一个 秒级别的中断

使用 Timer例程, 是不是 对于复杂的程序 不适合?(包含几个Task,1个队列,串口终端, TCP UDP)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top