很高兴按照我的评测计划,评测到第四贴了。
这个是我自己发挥的贴子,我想跑一下FreeRtos。现在CubeMX生成FreeRtos程序已经很方便了。所以利用这次机会在这里跑一下。
首先,我打开了我以前安装的CubeMX,我已经从ST网站下了L4的CUBE库。我就从本地安装。
在CubeMX的HELP,安装PATCH,下边的从本地安装
安装完了什么也没有,也就是说L4是空的,我就奇了怪了,明明装进去了。
我这个不死心加不痛快,我又花血本从网上装,就点L4最新的库,直接就安装了。
缺点是时间有点长。
等安装完了,我又开始找L4,还是没有。。。。。。
我有点鸡眼了。怎么就装不上了。
我把CubeMX删掉,从ST网站下个最新版本的。这回同上回有点不一样了:
可以看出有许多更新的东东,我就按装吧,可是死慢啊,我就让它自己下,自已先去干别的了。
等了好长时间。我看下最后一个,我就停了它,反正我需要的已经下来了。
我再一次打开CUBEMX,这回同我以前版本,根本就不一样了。
选择新建工程。弹出如下画面:
菜单第二项为BOARD,就是开发板我就从开发板选,正好我评估的板子一定是官方的板子。
出现弹出窗口问是否是管脚按开发板的默认定义,还糊涂个北自然选择YES。
然后弹出如下图画面:可以看出开发板的管脚都已经定义好了
嘿嘿!都做好了,我就不用做了,然而失误就在这里。
默认的是外部晶振,而本板根本就不带外部晶振。
只有一个X2
默认的如下图所示:
我使用内部16MHZ晶振:
然后在FreeRtos那块选使能:
若有错误,可以用推荐的晶振:反正在晶振这块没有红色提示就算过关
最后生成代码:
然后,用MDK5直接打开:
在主程序里已经有FreeRtos的启动代码:
- /* definition and creation of defaultTask */
- osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
- defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
- /* USER CODE BEGIN RTOS_THREADS */
- /* add threads, ... */
- /* USER CODE END RTOS_THREADS */
- /* USER CODE BEGIN RTOS_QUEUES */
- /* add queues, ... */
- /* USER CODE END RTOS_QUEUES */
-
- /* Start scheduler */
- osKernelStart();
复制代码
我们做的是在后边的 StartDefaultTask函数里边,加个任务:
- /* StartDefaultTask function */
- void StartDefaultTask(void const * argument)
- {
- /* USER CODE BEGIN 5 */
- osThreadDef(LED_Thread, testled, osPriorityNormal, 0, configMINIMAL_STACK_SIZE);
- osThreadCreate (osThread(LED_Thread), NULL);
- /* Infinite loop */
-
- for(;;)
- {
- osDelay(1);
- }
- /* USER CODE END 5 */
- }
复制代码
然后在main前面添个任务的函数: testled
- /* USER CODE END PFP */
- void testled(void const * argument)
- {
- for(;;)
- {
- HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14|GPIO_PIN_7);
- osDelay(500);
- }
- }
复制代码
传一下main因为就改这个文件了:
main.c
(15.74 KB, 下载次数: 1)
发一下视频:
http://v.youku.com/v_show/id_XMz ... j.8428770.3416059.1
最后总结一下:
1,CubeMX一定要最新版
2,若选开发板,一定要配置一下时钟。否则出现不运行的结果(其实质是晶振找不到出现硬件错误)
此内容由EEWORLD论坛网友ddllxxrr原创,如需转载或用于商业用途需征得作者同意并注明出处