Fvco:VCO频率SYSCLK:系统时钟频率Fusb:USB,SDIO,RNG等的时钟频率Fs:PLL输入时钟频率,可以是HSI,HSE等. plln:主PLL倍频系数(PLL倍频),取值范围:64~432.pllm:主PLL和音频PLL分频系数(PLL之前的分频),取值范围:2~63.pllp:系统时钟的主PLL分频系数(PLL之后的分频),取值范围:2,4,6,8.(仅限这4个值!)pllq:USB/SDIO/随机数产生器等的主PLL分频系数(PLL之后的分频),取值范围:2~15.
外部晶振为8M的时候,推荐值:plln=336,pllm=8,pllp=27、工程设置8、生成代码建议勾选上分文件管理。我们在生成代码的时候,出现了如下提示,我们这里需要解决这个警告,否者会出问题。前面介绍FreeRTOS时说过,FreeRTOS线程切换的本质就是定时器定一个时间,定的时间到了就切换运行其它线程,在默认情况下会使用Systick来作为RTOS的时间片定时器,这里不凑巧的是HAL 库代码已经使用了 Systick,所以上面警告就是告诉你冲突了,我们需要解决这个冲突。如何解决冲突?先点击“否”,将 sys 中的 Systick 换成其它定时器,比如tim1,RTOS就使用 tim1来做自己的Systick。做了以上设置后在生成代码时就不会再出现前面所提到的警告。FreeRTOSConfig.h在生成的工程项目中的头文件目录下有一个FreeRTOSConfig.h,如果是源码移植的话,我们应该修改这一个.h来设置我们需要的配置,但是CubeMx提供了图形化的配置界面,也就是我们前面所介绍的内容,我们进行了前面的配置后,关键配置信息就会记录到这个.h中,最后 FreeRTOS在工作时就会使用到.h 中的相关配置。3、工程文件介绍CMSIS APICMSIS API怎么样是不是跟我们使用原生API创建的任务函数有点不一样,那是肯定不一样的。但是要明白这种方式只不过是给FreeRTOS原生的API穿上了一件华丽的外衣而已,函数内部其实还是调用的原生API,只不过没让你看见而已。原生API原生API不管是CMSIS API还是原生API函数的创建过程基本是一样的,只不过函数不一样,所以也不要太过纠结使用哪一种API,后期这两种API都会分析它们之间的不同,包括消息队列、信号量、互斥量等等。CMSIS API函数主要有:
Signal Events //信号 osSignalSet : Set signal flags of a thread. osSignalClear : Reset signal flags of a thread. osSignalWait : Suspend execution until specific signal flags are set.Mutexes //互斥锁 osMutexCreate : Define and initialize a mutex. osMutexWait : Obtain a mutex or Wait until it becomes available. osMutexRelease : Release a mutex. osMutexDelete : Delete a mutex.Semaphores //信号量 osSemaphoreCreate : Define and initialize a semaphore. osSemaphoreWait : Obtain a semaphore token or Wait until it becomes available. osSemaphoreRelease : Release a semaphore token. osSemaphoreDelete : Delete a semaphore.Memory Pool //内存池 osPoolCreate : Define and initialize a fix-size memory pool. osPoolAlloc : Allocate a memory block. osPoolCAlloc : Allocate a memory block and zero-set this block. osPoolFree : Return a memory block to the memory pool.Message Queue //消息队列 osMessageCreate : Define and initialize a message queue. osMessagePut : Put a message into a message queue. osMessageGet : Get a message or suspend thread execution until message arrives.Mail Queue //邮箱队列 osMailCreate : Define and initialize a mail queue with fix-size memory blocks. osMailAlloc : Allocate a memory block. osMailCAlloc : Allocate a memory block and zero-set this block. osMailPut : Put a memory block into a mail queue. osMailGet : Get a mail or suspend thread execution until mail arrives. osMailFree : Return a memory block to the mail queue.
最后,祝大家中秋节快乐,玩的开心。原文作者:果果小师弟原文标题:操作系统RTOS为什么要搞两种API?原文链接:https://mp.weixin.qq.com/s/Fv7KoqSIGQPMtKuxpRCOiw
0 评论