ST在16年末对STM32F7的库文件进行了一次重要的升级,推出了LL库,该库与HAL库功能类似,LL库相当于操作寄存器,可分别单独使用也可以共同使用,HAL库的效率低下是受人诟病的,高频率的uart与tim都不敢用,LL库就解决了这个问题。因此接下来的工程中所有的初始化采用HAL库,其他的操作全部使用LL代替。还有一个升级就是使用了Free RTOS 9.0版本,这是一个革命性的升级,支持文件系统和网络功能,还处于实验室阶段,这样就有了更多的选择。 Pixhawk具有nsh,可以用来进行简单的人机交互,这一个在FreeRTOS中叫做CLI,目前在F7芯片上还没有Demo需要移植,下面来简单介绍下移植的要点: 1. 确保串口的收发通顺: 本工程采用LL库使用串口中断收发,结合FreeRTOS的列队用来发送字符串。 2. 复制相关库文件: 下载FreeRTOS,将FreeRTOS_CLI.c/.h,UARTCommandConsole.c,Sample-CLI-commands.c,serial.c/.h复制到自己的工程,其中serial来自stm32f103的demo,需要进行修改。 3. 添加代码: stm32f7xx_it.c中串口中断入口使用vUARTInterruptHandler(USART3); “ FreeRTOS_CLI.h”中加#define configCOMMAND_INT_MAX_OUTPUT_SIZE 1000 “UARTCommandConsole.c””中修改参数:#define cmdQUEUE_LENGTH 2000 “UARTCommandConsole.c”修改if( cRxedChar == '\n'|| cRxedChar == '\r' )为(cRxedChar == '\n' ),这是因为在windows中回车是\n\r,会触发两次。 “Sample-CLI-commands.c”中注释vTaskList();, 在启动os前添加vRegisterSampleCLICommands();vUARTCommandConsoleStart(1000, 1 ); 这样就可以通常串口进行交互了,下面来使用CLI来打印任务运行情况和占用时间,占用时间需要一个频率非常高的定时器,本工程使用的是5KHz,这个在以前的低效率HAL中是非常吃力的,现在使用LL库运行起来就轻松很多,如果以后因为这个高频率的定时器导致资源吃紧,那么将其移入到os的滴答时钟里面也是可以的。何配置在安富莱_STM32-V6开发板_FreeRTOS教程.pdf中有详细介绍。 CLI可以很方便的添加命令行: 仿照例子轻松写出,例如添加一个LED灯的控制,具有一个参数,用来控制开关。在“Sample-CLI-commands.c”中添加如下函数:
|
|