正文
用STM32CubeMX创建FreeRTOS项目
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
1. 目标, PG13,PG14双线程双闪灯。
2. 测试平台
stm32f429i-disco
keil v5.13.0.0
CubeMx 4.8.0
3. 步骤
3.1 打开cube, PG13,13设为输出, Rcc选外部晶振, 点选FreeRTOS
3.2 时钟配置界面 enable css, 配置成系统主频168M
3.3 全部默认设置, 生成代码。
3.4 配置好的模版大概是这样的
//void StartDefaultTask(void const * argument);int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init(); osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, , );
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
osKernelStart();
while();
}/* StartDefaultTask function */
void StartDefaultTask(void const * argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
osDelay();
}
/* USER CODE END 5 */
}
照猫画虎填上自己代码就行了
void blink_ledG(void const *argument);
void blink_ledR(void const *argument);
main(){
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_SET); osThreadDef (ledG, blink_ledG, osPriorityNormal, , );
osThreadDef (ledR, blink_ledR, osPriorityNormal, , ); osThreadCreate(osThread(ledG), NULL);
osThreadCreate(osThread(ledR), NULL);
osKernelStart();
while ();
}void blink_ledG(void const *argument) {
for(;;){
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);
osDelay();
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET);
osDelay();
}
}
void blink_ledR(void const *argument) {
for(;;){
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_SET);
osDelay();
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_RESET);
osDelay();
}
}