本帖最后由 ddllxxrr 于 2020-12-10 21:13 编辑
昨天其实就到了,我的菜鸟果果也显示到了,可到了老子拿快递时,确实没看到,今天看到了。马不停蹄。拿出来晒晒。
看样子还是NUClEO板子的老样子。不过这次我信心满满我用KEIL MDK 5加STM32CUBEMX的形式。主要评估下FREERTOS。
所以一开始我在板子没到之前就动起手了,准备了两个工具:
1,一个是MDK PACK,下载前安装。
2,另一个是STM32CUBEMX,当然也是安装完毕。
STM32CUBEMX很好用,只要打开这个板子的型号就可以了。
我把FREERTOS打开,使能,选择FREERTOS加线程,我加了一个点灯线程准备备用。
而这块板子有STLINK,STLINK有虚拟串口,所以第二个我谁备往外发“HELLO EEWORLD !!!
我查看了下原理图:
对查了下数据手册:
可见PA1 和 PA2是UART2,而在STM32CUBE中正是这两个管脚(因为我选择的是板子型号)。
我把第二个线程定义为始终发“HELLO EEWORLD!!!”
我选点STM32CUBEMX中的生成代码,然后,在线程中加入几句话就轻易的实现了:
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
HAL_UART_Transmit(&huart2,TxData,16,0xffff);//把TxData的内容通过uart2发送出去,长度是10,timeout的时间是最大值0xffff
osDelay(10);
}
/* USER CODE END 5 */
}
/* USER CODE BEGIN Header_StartTask02 */
/**
* @brief Function implementing the myTask02 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask02 */
void StartTask02(void const * argument)
{
/* USER CODE BEGIN StartTask02 */
/* Infinite loop */
for(;;)
{
HAL_GPIO_WritePin(LD4_GPIO_Port, LD4_Pin, GPIO_PIN_RESET);
osDelay(100);
HAL_GPIO_WritePin(LD4_GPIO_Port, LD4_Pin, GPIO_PIN_SET);
osDelay(100);
}
/* USER CODE END StartTask02 */
}
以下是发送线程的结果:
而这时闪灯也在运行,第一次用NUCLEO运行FREERTOS成功。
总结一下,以前我之所以对RTOS有点偏见是因为,它得移植,要知道得汇编我死烦汇来汇去,因为一不小心,程序出发时就是个残疾(汇编有毛病)。所以我对所有的RTOS都不怎么待见。反正老子没有用,也活得下去。渐渐我对KEIL RXT感兴趣了,因为它不用移植。但通过这次评测我明白了,STM32CUBEMX,学好了之后,FREERTOS也等于不用移植。
对于我这个只用标准库编程的老顽固来说这次评测对我感触太大,我想重新考虑一哈,以后的路怎么走。