首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混频产生啁啾信号

混频产生啁啾信号
EN

Stack Overflow用户
提问于 2018-03-23 15:44:39
回答 1查看 71关注 0票数 0

我使用LPCXpresso1549产生频率在35000赫兹至45000赫兹之间的啁啾信号。首先,我在matlab上生成DAC啁啾样本,并将它们存储在const uint16_t chirpData[]中。样品频率为96000 Hz,共96001个。然后,我设置定时器,每(1/96000)秒钟一个一个地发送样本。然而,我的信号频率在3200赫兹到44000赫兹之间。是因为计时器太慢了吗?

代码语言:javascript
复制
enter code here
const uint16_t chirpData[NUM_SAMPLES] = { 2048, ...., 1728, 2048} //96001 sampels

 #include "mbed.h"
 #include "chirp.h"

 Serial pc(USBTX, USBRX);
 Timer t;
 AnalogOut aout(P0_12); 

 int main()
 {   
     int i = 0;

     while(true) {
         // Write the sample to the analog

         t.start(); //start timer
         if(t.read() >= 0.00001){ // 1/samplef = 0.00001
              aout.write_u16(chirpData[i]);

              i++;
              t.reset(); // reset timer to zero

              if(i > 96000) {
                  i = 0;
              }
          }
     }
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-11 11:13:35

在本例中,我建议您通过以下方式使用线程执行任务:

代码语言:javascript
复制
#define xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask ) xTaskGenericCreate( ( pvTaskCode ), ( pcName ), ( usStackDepth ), ( pvParameters ), ( uxPriority ), ( pxCreatedTask ), ( NULL ), ( NULL ) )
xTaskHandle taskHandle;
xTaskCreate(..); //Check Task.h

然后,可以通过以下方式设置任务周期:

代码语言:javascript
复制
void your_task() {
  unsigned task_cycle_ms = 1/freq; //Careful, convert to ms.
  portTickType xLastWakeTime = 0;
  portTickType xFrequency = task_cycle_ms/portTICK_RATE_MS;
  for(;;) {
    vTaskDelayUntil( &xLastWakeTime, xFrequency );
    //your code to execute every cycle here
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49453536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档