对于延迟判断时间,我们可以用几个__nop();来推迟第一次判断到来的时间,让Pn时刻刚好超过CoungtFlag置1的时刻,这样,整个延时函数的最小误差就由__nop();的执行时间决定了,在答主实践的平台上,一千个__nop();的执行时间是8440ns,所以本文的方案理论上可以让delay_us(1);的最小误差<=8.44ns,实际上答主调试后...
us延时会在很多外设驱动的时候用到,但是GD32提供的资料里面没有看到,只有一个ms延时的函数,不过GD32用的和stm32是一样的内核,因此也可以套用stm32嘀嗒定时器的版本,就是直接用stm32的思路来实现,这里直接贴代码: 说明一下实验平台: GD32F470ZG 立创梁山派开发板 代码如下: #include"delay.h"// #define USE...
GD32F103延时不准,串口打印乱码 使用官方例程时发现delay_1ms()这个函数的延时很不准确,并且官方例程的串口打印是乱码的。 在网上查找资料,最终成功解决问题,步骤如下: 首先确定自己板子用的是外部晶振还是内部晶振,频率是多少,我使用的是外部晶振,4MHz,确定了这个之后找到system_gd32f10x.c这个文件 将__SYS_OSC_...
dac_value_set函数用于设置模拟输出电压值,单位为mV。delay函数是一个简单的软件延时函数,用于实现延时。这两个函数的代码清单如代码清单DAC例程部分函数说明所示。代码清单 DAC 例程主函数 int main(void){ /* peripheral clock enable */ rcu_config(); /* GPIO config */ gpio_config(); /* DAC config ...
在上述代码中,delay_us函数实现了在微秒级别进行延时操作,函数中的参数nus为需要延时的时间,函数的实现原理是通过在系统中使用中断控制器SysTick实现的。 4. 调用延时函数 在完成延时函数的编写后,我们需要在程序中调用函数。如果需要进行一段时间的延时,我们可以直接调用delay_us函数并传入需要的时间参数即可,例如: ...
dac_value_set函数用于设置模拟输出电压值,单位为mV。delay函数是一个简单的软件延时函数,用于实现延时。这两个函数的代码清单如代码清单DAC例程部分函数说明所示。 代码清单 DAC 例程主函数 int main(void) { /* peripheral clock enable */ rcu_config();...
另外,主频的提高会导致systick时钟递增的速度更快,寄存器原本从零递增到最大值的时间是1.8s,主频增加后变为1.1s,即延时1.1s后定时器又会从零开始数起,结果就是我们调用一次delay_ms函数所延时的最大时间更短了,故新增了一个函数解除延时限制 led移植关注库的宏定义和函数名不一样,需要到固件库里找找 ...
BNE __delay_loops __delay_loops_0:BX LR ;; return END 复制 #ifndef __GD32F10X_...
1.发生外部中断后,在系统提供的中断服务函数中已经清除了中断标志位,所以大家在编写中断回调函数的时候不需要再次清除中断标志位。 2.中断的优先级不要跟tick timer,也就是滴答定时器的中断优先级一样,否则在中断回调函数中使用HAL_Delay函数时会出现死机现象。
delay 函数:一个简单的延时函数,用于控制 LED 的亮灭频率。main 函数:在主程序中,循环控制 LED 的...