STM32程序从标准库移植到HAL库的时候,会发现HAL库中只有一个毫秒级延时函数HAL_Delay(),而没有微秒级延时delay_us(),本文就在HAL库中用定时器实现这个delay_us()。 如下图,找到HAL_Delay()函数定义的地方,发现这个函数有__weak标识,是一个弱化函数,可以被重写。 由于HAL库许多地方都使用了HAL_Delay()函数,...
ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);///Set pulse positions to late//AdcaRegs.ADCCTL1.bit.INTPULSEPOS =1;///power up the ADC//AdcaRegs.ADCCTL1.bit.ADCPWDNZ =1;///delay for 1ms to allow ADC time to power up//DELAY_US(1000); EDIS;...
官方程序里的延时函数Delay_us(uint32 delay_time_us),在实际测试时,有个奇怪的现象。 测试程序看门狗设置1008ms,测试程序延时方式如下: Delay_us(500000); (void)WDT1_Service(); //延时 500ms,喂狗 Delay_us(600000); (void)WDT1_Service(); //延时 600 毫秒,喂狗 Delay_us(1000000); (void)WDT1_...
在很多程序中都会调用延时程序DELAY_US(A),在文件DSP281x_Examples.h中有如下宏定义: #define DELAY_US(A) DSP28x_usDelay(((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L) 从定义很容易推算出,需要延时A微妙就把DELAY_US()的参数设置为A即可。 在仿真调试的情...
在HAL库中用定时器实现自定义延时函数delay_us() 描述 STM32程序从标准库移植到HAL库的时候,会发现HAL库中只有一个毫秒级延时函数HAL_Delay(),而没有微秒级延时delay_us(),本文就在HAL库中用定时器实现这个delay_us()。 如下图,找到HAL_Delay()函数定义的地方,发现这个函数有__weak标识,是一个弱化函数,...
首先,在DSP281x_usDelay.asm中使用 1.sect"ramfuncs"//最好对应CMD文件进行配置 将该段代码定义到段“ramfuncs”中,段“ramfuncs”的位置在编译时指定,实际上由CMD文件中的如下语句来指定: 1ramfuncs LOAD = FLASHD, PAGE =0,23RUN = RAML0, PAGE =1,45LOAD_START(_RamfuncsLoadStart),67LOAD_END(_Ramf...
单纯延时1us这个delay_us好像做不到了,要重新写个函数。void delay_us1(){ u32 temp;SysTick->...
执行DELAY_US()语句后进入defaultIsr.c中断?? Intellectual390points 我交替采样两个通道。两个通道采样完毕,下一个循环采样时执行DELAY_US()后进入defaultIsr.c的DATALOG_ISR(),这是为什么? 部分程序: AdcRegs.ADCTRL2.all=0x2000; for (;;) { while(AdcRegs.ADCST.bit.INT_SEQ1==0)...
void delay_us 普通延时函数的计算方法主要是通过循环来实现。根据CPU的运行速度以及循环次数,可以估算出延时的时长。下面是一个常见的延时函数的计算方法: 1.获取CPU的频率(单位为Hz),例如获取方法为:SystemCoreClock。 2.假设1秒钟有n个时钟周期,那么每个时钟周期的时间为1/n秒。 3.根据你要延时的时间(单位为...
最近笔者在调试一个DSP程序时,发现在ad外设初始化时无法正常执行,单步检查,发现当执行到调用 DELAY_US(1000);语句时,就跳入非法。 进一步追查,DELAY_US()是宏定义函数,在笔者的程序中实际调用的是F28x_usDelay(),而这个函数是TI提供的库函数,因为笔者使用了基于FLASH的CMD文件,所以这个函数被分配在FLASH中,但需...