㈠ dsp编程遇到延时子函数的问题,问题太菜了,但是还是希望得到指点
kk为整形,最多能到16位,即-32768-+32767,你写3000000没有意义,只能取最后十六位,所以你改成long型就可以实现效果了。
void delay_loop(),就是一个延时函数。
㈡ dsp定时器中断如何实现延时60s
直接在定时中断中设置一个LoopCount,然后不停的LoopCount++,然后再在主程序里的循环里不停的查询LoopCount,达到你要的值就去执行你要的代码,否则就接着循环。你用10Mhz的时钟,想达到非常高的精度本身就不是件容易的事。真想要特别高的精度,可以看看F2812和F28335,150MHz。精度一定能满足你。
㈢ DSP延时函数默认的是ms吗
我认为就是一个简单的CPU空转。如果要算它具体消耗了多少时间,大概应该可以这么初略的这么估计时间
2000*count*单条指令执行周期时间(在不考虑执行跳转指令的延迟间隙、内层循环计数器复位、外层循环计数器累加的情况下)。
单条指令执行周期时间也就是你所使用的DSP处理器主频的倒数。
㈣ dsp28335定时器中断延时,定时器打开后关不上。麻烦各位帮看看,程序很短
这可能跟你定时器设定的timer0执行频率有关,当count等于0时,while(count);还未得到执行就又被中断打断了
可以在timer0中写:if ( count ) count--;试试,或者在timer0中把中断关了就是
㈤ DSP精确的延时程序应该怎么写啊
你的程序结构抄安排不合理,最终导致你现在出现的问题,最好的方法就是采用定时器中断,比如说1ms,像串口之类的接收发送就放到定时中断里面,接收靠查询,发送可以每次中断发送,也可以几次中断发一次,ad采样建议采用软件启动方法,ecap不知道你具体用来做什么。总之一句话,你的程序结构需要合理的调整一下。
㈥ DSP程序里面用于延时的循环语句怎么计算延时时间求高人解答。。。。
我认来为就是一个简单的CPU空转。如果要自算它具体消耗了多少时间,大概应该可以这么初略的这么估计时间
2000*count*单条指令执行周期时间(在不考虑执行跳转指令的延迟间隙、内层循环计数器复位、外层循环计数器累加的情况下)。
单条指令执行周期时间也就是你所使用的DSP处理器主频的倒数。
㈦ dsp28335 在for函数里面有if语句,if语句里面有DELAY_US()函数,延时函数后面的语句不执行
单单从这个程序是看不出什么问题的。
你可在b=2这一行前面打个断点,看看程序是不是能运行到这一行,可能你的DELAY_US是一个死循环,所以使程序运行不到下面这一行。另外,如果你的程序运行到b=2这一行后,单步调试一下,看看b值的变化情况,基本就能发现问题。
㈧ DSP28335定时器0定时1秒准的100秒不准
第2个参数是给出当前cpu运行在多少MHz的主频下,你可以去看一下DSP2833x_CpuTimers.c这个程序中的这个函数定义,
一旦你初始化28335的时钟,那么主频就定下来了,像你这种调用使用150000和1500,首先cpu主频不会这样改变,其次,也不可能运行在150000MHz,28335运行在150MHz时,第2个参数写150即可,要修改的是第3个参数,看28335的数据手册,对定时器的寄存器操作是有取值范围的,定时器不可能能给出100s的延时,顶多延时个二、三十秒,再多肯定计数溢出。
普通要延时100秒,可以让定时器输出1秒的延时,触发中断,中断中计算秒数,数到100秒再另外给出标志来,定时器是用于短时精准计时和延时的,一般是微秒级和毫秒级用得多些。定时器和RTC的用法是不一样的,用处也不一样。
比如第3个参数就是要给出延时多少微秒。下面是这个函数的说明:
//---------------------------------------------------------------------------
// ConfigCpuTimer:
//---------------------------------------------------------------------------
// This function initializes the selected timer to the period specified
// by the "Freq" and "Period" parameters. The "Freq" is entered as "MHz"
// and the period in "uSeconds". The timer is held in the stopped state
// after configuration.
//
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)