FreeRTOS移植并实现一个多任务程序
打开CubeMX,点击如图
输入自己的芯片型号,我这里是STM32F103C8T6
选择好后点击start project
依次改为
依次改为
依次改为
在这里把频率改为72MHz
用keil的改成MDK_ARM
勾上
生成代码即可
———————————————————————————————————————————
下面教学创建一个多任务程序
在main函数的MX_FREERTOS_Init()调用之前写好你的初始化
这些代码我都放在main函数上面了,这样就创建好了两个任务,这里注意了!栈大小不要太大,我亲测两个任务栈大小都设置为512的话只会运行一个任务,后面都设置为128才正常运行的,句柄可有可没有
void led_init(void)
{
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIOBInit;
GPIOBInit.Mode = GPIO_MODE_OUTPUT_PP;
GPIOBInit.Pin = GPIO_PIN_10;
GPIOBInit.Pull = GPIO_PULLUP;
GPIOBInit.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&GPIOBInit);
}
void led_on(void)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);
}
void led_off(void)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET);
}
void led_turn(void)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
}
void led1_init(void)
{
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIOBInit;
GPIOBInit.Mode = GPIO_MODE_OUTPUT_PP;
GPIOBInit.Pin = GPIO_PIN_11;
GPIOBInit.Pull = GPIO_PULLUP;
GPIOBInit.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&GPIOBInit);
}
void led1_on(void)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11,GPIO_PIN_RESET);
}
void led1_off(void)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11,GPIO_PIN_SET);
}
void led1_turn(void)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);
}
TaskHandle_t myTaskHandler;
void myTask ( void * arg)
{
while(1)
{
led_turn();
vTaskDelay(500);
}
}
TaskHandle_t myTask1Handler;
void myTask1 ( void * arg)
{
while(1)
{
led1_turn();
vTaskDelay(500);
}
}
原文地址:https://blog.csdn.net/cykaw2590/article/details/146296584
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/595729.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/595729.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!