当前位置: 首页 > article >正文

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

相关文章:

  • 如何借助es的snapshot跨集群迁移部分索引
  • git原理与常用命令及其使用
  • electron框架(4.0)electron-builde和electron Forge的打包方式
  • 鸿蒙开发工程师简历项目撰写全攻略
  • 开源模型应用落地-LangGraph101-多智能体协同实践(六)
  • 蓝桥杯 第十天 2019国赛第4题 矩阵计数
  • 《Python实战进阶》No42: 多线程与多进程编程详解(下)
  • PowerBI纯小白如何驾驭DAX公式一键生成:copilot for fabric
  • Docker学习笔记(十)搭建Docker私有仓库
  • 密码协议与网络安全——引言
  • 零基础搭建智能法律知识库!腾讯云HAI实战教程
  • 基于Arm GNU Toolchain编译生成的.elf转hex/bin文件格式方法
  • 数学建模 绘图 图表 可视化(3)
  • 星越L_超速报警功能使用讲解
  • Java Web开发技术解析:从基础到实践的全栈指南
  • 手撸一个 deepseek 聊天历史对话、多轮对话(ollama + deepseek + langchain + flask)
  • 基于图像处理和机器学习实现的压差表数值读取
  • HarmonyOS鸿蒙开发 BuilderParam在父组件的Builder的点击事件报错:Error message:is not callable
  • 【时时三省】(C语言基础)习题2 scanf函数
  • Pytorch使用手册—自定义 C++ 和 CUDA 运算符(专题五十一)