看样子还是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也等于不用移植。
|