Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
我想 СС2650该信号的频率、该频率将作为 μ C Launch Pad 上微控制器的输入。 为此、我将定时器配置为计数器模式、该模式对信号中上升沿的数量进行计数。 我花费测量1ms 并通过 GPTimerCC26XX_getValue()获得结果; 下面是我的代码示例:
/*********
*包括
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "delay.h"
#include "newtask.h"
/*********
*外部变量
*/
Task_Structt newtask;
Char newTaskStack[512];
GPTimerCC26XX_Handle tTimer;
GPTimerCC26XX_Handle cTimer;
PIN_Handle timerPinHandle;
/* PIN_Config 表的全局存储器存储*/
静态 PIN_STATE timerPinState;
uint32_t qwerty = 0;
PIN_Config GptPinInitTable[]=
{
IOID_15 | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_EN | PIN_迟滞、
PIN_Terminate
};
静态空 tTimer_init (void);
静态空 ctTimer_init (void);
静态空 Init_and_start_PWM (void);
空 timerCallback (gpTimerCC26XX_Handle handle、gpTimerCC26XX_IntMask interrupt Mask)
{
gTimerCC26XX_getTimer (gpTimer_getTimer);
gpterm (gpcc26XX)(unstop
);gptrack_interrupt TimerCC26XX (gpter_timer_timer_timer_timer_timer_timer_timer_timer);gptrack_interrupt (gPTTimer_timer_timer
GPTimerCC26XX_Close (cTimer);
GPTimerCC26XX_Close (tTimer);
}
void newFxn (UARg a0、UARg A1){
Init_and_start_PWM ();
while (1){
Start ();
Log_Info1 ("频率:%d kHz"、qwerty);
E1000_sep_sequate
)
}
void new_createTask (void)
{
Task_Params taskParams;
//配置操作系统任务
Task_Params_init (&taskParams);
taskParams.stack = newTaskStack;
taskParams.STACKSIZE = sizeof (newTaskStack);taskParams.priority
= 3;
Task_constructure.newtask (&newtask、 newFxn、&taskParams、NULL);
}
void Start (void)
{
tTimer_init ();
cTimer_init ();
// TimerSynchronize (GPT0_BASE、TIMER_0A_SYNC | TIMER_0B_SYNC);
GPTimerCC26XX_START (cTimer);
GPTimerCC26XX_START (tTimer);
}
静态空 tTimer_init (空)
{
GPTimerCC26XX_Params 参数;
GPTimerCC26XX_Params_init (¶ms);
params.width = GPT_CONFIG_16BIT;
params.mode = GPT_MODE_OneShot_up;
params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
tTimer = GPTimerCC26XX_OPEN (Board_GPTIMER0B、¶ms);
if (tTimer = NULL){
Log_err0 ("无法打开 GPTimerVal 计时器");
Task_EXIT ();
CC26XX_freq1
、GPTimervl = GPTimerCLUST_Timer000Hz;GPTimerQ_freq1、GPTimer000_freq1、GPTimer000_freq1、GPTimer000_freq1、GPTimerv1、GPTimer000_freq1、GPTimer000_freq_freq1、GPTimerval GPT_INT_TIMEOUT);
}
静态空 cTimer_init (void)
{
GPTimerCC26XX_Params_timerParams;
GPTimerCC26XX_Params_init (&timerParams);
timerParams.width = gppt_config_16BIT;
timerParams.mode = GPT_MODE_EDGE_COUNT_UP;
//timerParams.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
cTimer = GPTimerCC26XX_OPEN (Board_GPTIMER1A、&timerParams);
if (cTimer = NULL){
Log_error0 ("打开 GPTimer"失败);
}
/*打开引脚手柄并将引脚路由到计时器*/
timerPinHandle = PIN_OPEN (&timerPinState、GptPinInitTable);
GPTimerCC26XX_PinMux pinMux = GPTimerCC26XX_getPinMux (cTimer);
PINCC26XX_setMux (timerPinHandle、PIN_ID (IOID_15)、pinMux);
}
静态 void Init_and_start_PWM (void)
{
PWM_Handle hPWM;
PWM_Params pwmParams;
PWM_Params_init (&pwmParams);
pwmParams.pwmParams
= period_3Hz;pwmParams.pwmParams = pwmParams.pwmUnits
pwmParams.dutyUnits = PWM_Duty_Fraction;//分数占空比
pwmParams.dutyValue = PWM_Duty_Frage_MAX/2;//50%占空
比//pwmParams.idleLevel = PWM_IDLE_LOW;
hPWM = PWM_OPEN (Board_PWM0、&pwmParams.idleLevel)= PWM_NOTELL;hPWM = PWM_OPEN
(Board_PWM0);电路板(电路板错误0)= PWM0_NOT_PWM0);电路板(电路板(电路板错误0)= PWM0_NOT_PWM0_NOT_PWM0);电路板(如果
因此、我在日志中看到:
#000025 [ 1.011]信息:(newtask.c:69)频率:1kHz
#000026 [2.011] INFO:(newtask.c:69)频率:2kHz
#000027 [ 3.012]信息:(newtask.c:69)频率:3kHz
#000028 [4.012]信息:(newtask.c:69)频率:4kHz
#000029 [5.012]信息:(newtask.c:69)频率:5kHz
#000030 [6.012]信息:(newtask.c:69)频率:6kHz
#000031 [ 7.012 ]信息:(newtask.c:69)频率:7kHz
#000032 [ 8.013 ]信息:(newtask.c:69)频率:8kHz
#000033 [9.013]信息:(newtask.c:69)频率:9kHz
#000034[10.013]信息:(newtask.c:69)频率:10kHz
我不明白为什么每次值增加? 如何在不增加的情况下获得结果?
