Image
Image

慢醇

+ 关注

粉丝 6     |     主题 134     |     回帖 1382

正点原子STM32F1工程delay文件阅读
2023-7-8 14:36
  • ST MCU
  • 21
  • 6623
  } #endif  
  SysTick->LOAD=nus*fac_us;装载我们延时对应的嘀嗒数,然后将计数器清零然后使能计数器,随后只要等待计数 ...  
  下面是不带操作系统的延时函数,不给操作系统提供服务的情况下可以随意的修改SysTick,所以需要延时多久只 ...  
  前面说了,有操作系统的情况下SysTick是给OS提供服务的,所以这种情况下不能随意修改SysTick的LOAD和VAL寄 ...  
  接下来就简单了,支持操作系统情况下的us延时函数和ms延时函数:  
  接下来来看下面一行的fac_ms=1000/delay_ostickspersec;。首先1/delay_ostickspersec的含义是一个OSTick代 ...  
  reload本来是延时1us需要的SysTick嘀嗒数,乘以1M之后就变成了延时1s需要的SysTick嘀嗒数,再除以操作系统 ...  
  reload是在前面定义的,reload=SystemCoreClock/8000000;这和上面的fac_us=SystemCoreClock/8000000;是一模 ...  
  ......  
  这里是选择SysTick的时钟源为HCLK/8 = 72M/8 = 9M。也就是说SysTick每秒钟产生9000000个嘀嗒。也就是每个嘀 ...  
  delay的初始化函数。  
  这个函数我暂时也不太懂,先不讲。。。  
  这个函数则是对操作系统自带的延时函数的封装,同样也是分UCOS-iii和UCOS-ii。 ...  
  这两个函数也没什么好讲的,一个是关闭操作系统任务调度的函数,一个是恢复操作系统任务调度的函数。至于为 ...  
  delay_osintnesting代表中断嵌套次数,主要是用于判断当前是否处于中断中。  
  条件编译,define了一些使用操作系统时需要用到的变量,上面可以支持UCOS-ii和UCOS-iii。OS_CRITICAL_METHO ...  
  ......  
  接下来是两个变量的定义,fac_us和fac_ms,前者是代表延时1us需要的SysTick滴答数,后者是代表延时1ms需 ...  
  下面开始代码讲解 首先是这一部分,很简单,一个条件编译,如果使用操作系统的话,包含一个头文件,这个 ...  
如何保证多个中断同时调用 DSP 时的系统响应性和计算正确性?
2024-3-22 20:55
  • 凌鸥LKS MCU
  • 4
  • 673
  请帮忙,如何保证多个中断同时调用 DSP 时的系统响应性和计算正确性?  
2
3
近期访客