本帖最后由 ddllxxrr 于 2020-12-13 09:45 编辑
干么?还得用老办法看手册,找到定时器运行频率,然后找到公式算定时时间吗?
回答当然是不。社会是进步的,搞单片机的也得与时俱进。否则被时代的列车抛出很远,然后坐绿皮车赶回来。
用STM32CUBEMX中的FREERTOS不用算的。只需指指点点就行。
首先接着上篇的评测的界面来。点开FREERTOS,再接着点开,Config Parameters,把定时器使能:
然后在Timers and Semaphores中增加一个定时器名称:
然后生成代码,注意上次是选择的开发板,一些管脚是不用配置的都配置好了,我生成的是MDK5代码。
可见定时器定义代码已经写好,然后往代码里加一个定时时间。
/* Create the thread(s) */
/* 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 */
osTimerStart(myTimer01Handle,2000) ;
/* Start scheduler */
osKernelStart();
然后在定时器回调函数里加个点灯代码:
/* myTimeCallback01 function */
void myTimeCallback01(void const * argument)
{
/* USER CODE BEGIN myTimeCallback01 */
HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);
/* USER CODE END myTimeCallback01 */
}
编译下载,运行看到板子上的LD2,以2秒钟的间隔在闪烁。
总结一哈:STMCUBEMX确实是居家生活,开发程序之良器。