STM32F407ZGT6工程模板(FreeRTOS+HAL)

STM32F407ZGT6工程模板(FreeRTOS+HAL)

      • 1新建工程文件夹
      • 2根目录文件夹顺序介绍
      • 3新建工程
      • 4移植FreeRTOSv202112.00内核版本V10.4.6
      • 移植验证

1新建工程文件夹

新建文件夹STM32F103ZGT6
新建子文件夹,Drivers、Middlewares、Output、Projects、User

Drivers 存放与硬件相关的驱动层文件
Middlewares 存放中间层组件文件和第三方中间层文件
Output 存放工程编译输出文件
Projects 存放 MDK 工程文件
User 存放 HAL 库用户配置文件、main.c、stm32f1xx_it.c、
以及我们自己编写的其它应用程序

keilkill.bat 的可执行文件,双击便可执行。其
作用是删除编译器编译后的中间文件,减少工程占用的硬盘空间,方便我们打包。

2根目录文件夹顺序介绍

同STM32F103ZET6模板一致

3新建工程

同STM32F103ZET6模板一致

4移植FreeRTOSv202112.00内核版本V10.4.6

移植验证

/******************************************************************************************************* @file        main.c* @author      正点原子团队(ALIENTEK)* @version     V1.0* @date        2021-10-14* @brief       template 实验* @license     Copyright (c) 2020-2032, 广州市星翼电子科技有限公司***************************************************************************************************** @attention** 实验平台:正点原子 探索者 F407开发板* 在线视频:www.yuanzige.com* 技术论坛:http://www.openedv.com/forum.php* 公司网址:www.alientek.com* 购买地址:zhengdianyuanzi.tmall.com******************************************************************************************************/#include "./BSP/sys/sys.h"
#include "./BSP/delay/delay.h"
#include "FreeRTOS.h"
#include "task.h"//任务优先级
#define START_TASK_PRIO		1
//任务堆栈大小	
#define START_STK_SIZE 		128  
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);//任务优先级
#define LED0_TASK_PRIO		2
//任务堆栈大小	
#define LED0_STK_SIZE 		50  
//任务句柄
TaskHandle_t LED0Task_Handler;
//任务函数
void led0_task(void *pvParameters);//任务优先级
#define LED1_TASK_PRIO		3
//任务堆栈大小	
#define LED1_STK_SIZE 		50  
//任务句柄
TaskHandle_t LED1Task_Handler;
//任务函数
void led1_task(void *pvParameters);void led_init(void);                    /* LED初始化函数声明 */int main(void)
{HAL_Init();                         /* 初始化HAL库 */sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */delay_init(168);                    /* 延时初始化 */led_init();                         /* 初始化LED *///创建开始任务xTaskCreate((TaskFunction_t )start_task,            //任务函数(const char*    )"start_task",          //任务名称(uint16_t       )START_STK_SIZE,        //任务堆栈大小(void*          )NULL,                  //传递给任务函数的参数(UBaseType_t    )START_TASK_PRIO,       //任务优先级(TaskHandle_t*  )&StartTask_Handler);   //任务句柄              vTaskStartScheduler();          //开启任务调度
}//开始任务任务函数
void start_task(void *pvParameters)
{taskENTER_CRITICAL();           //进入临界区//创建LED0任务xTaskCreate((TaskFunction_t )led0_task,     	(const char*    )"led0_task",   	(uint16_t       )LED0_STK_SIZE, (void*          )NULL,				(UBaseType_t    )LED0_TASK_PRIO,	(TaskHandle_t*  )&LED0Task_Handler);   //创建LED1任务xTaskCreate((TaskFunction_t )led1_task,     (const char*    )"led1_task",   (uint16_t       )LED1_STK_SIZE, (void*          )NULL,(UBaseType_t    )LED1_TASK_PRIO,(TaskHandle_t*  )&LED1Task_Handler);         vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL();            //退出临界区
}//LED0任务函数 
void led0_task(void *pvParameters)
{while(1){while(1){HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);vTaskDelay(1000);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);vTaskDelay(1000);}}
}   //LED1任务函数
void led1_task(void *pvParameters)
{while(1){HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET);      /* LED1 灭 */vTaskDelay(200);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);      /* LED1 灭 */vTaskDelay(800);}
}/*** @brief       初始化LED相关IO口, 并使能时钟* @param       无* @retval      无*/
void led_init(void)
{GPIO_InitTypeDef gpio_init_struct;__HAL_RCC_GPIOF_CLK_ENABLE();                       /* LED0,LED1时钟使能 */gpio_init_struct.Pin = GPIO_PIN_9;                  /* LED0引脚 */gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;        /* 推挽输出 */gpio_init_struct.Pull = GPIO_PULLUP;                /* 上拉 */gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;      /* 高速 */HAL_GPIO_Init(GPIOF, &gpio_init_struct);            /* 初始化LED0引脚 */gpio_init_struct.Pin = GPIO_PIN_10;                 /* LED1引脚 */HAL_GPIO_Init(GPIOF, &gpio_init_struct);            /* 初始化LED1引脚 */HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET); /* LED0 灭 */HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);/* LED1 灭 */
}

STM32F407ZGT6工程模板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

驻马店建筑工程设计资质延续操作要点

150资质延续操作要点: 38提前准备:在资质证书有效期届满前,企业应提前做好准备工作,确保所有需要的资料齐全、有效,如企业营业执照、资质证书原件、财务审计报告、企业诚信记录、技术人员证书及社保缴纳证明等。 06在…

无限制数字(仅仅int类型)的大小的自然排序算法

直接上代码&#xff1a; #include <iostream> #include <vector> #include <string> #include <algorithm> #include <cctype>// Function to compare two strings in a natural way bool naturalCompare(const std::string& a, const std:…

Vue项目启动失败 UnauthorizedAccess

在VSCode中使用yarn dev命令启动项目失败&#xff0c;错误&#xff1a; yarn : File D:\Nodejs\yarn.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?L…

Java中如何处理跨域请求?

Java中如何处理跨域请求&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代Web应用程序开发中&#xff0c;跨域请求&#xff08;Cross-Origin…

linux编译安装openssl-3.0.2

安装openssl3.0.2 openssl版本太低可能影响等保及很多其他工具的安装&#xff0c;记一次编译3.0.2的安装过程。 一、首先先到官网下载最新的openssl&#xff1f; [ Downloads ] - /source/index.html 二、解压openssl包 tar -xzf openssl-3.0.2.tar.gz 三、检查是否已安装…

java版本ERP管理系统源码 Spring Cloud erp系统-更专业的ERP管理系统

ERP&#xff08;Enterprise Resource Planning&#xff0c;企业资源计划&#xff09;软件是一种集成的管理平台&#xff0c;它将企业的所有业务流程&#xff0c;包括采购、销售、库存、财务等&#xff0c;整合到一个统一的系统中。这种整合不仅提高了工作效率&#xff0c;还增强…

电脑硬盘数据恢复,4个方法,轻松恢复数据

在数字化时代的浪潮中&#xff0c;电脑硬盘不仅是存储数据的仓库&#xff0c;更是我们生活、工作、学习的记忆宫殿。然而&#xff0c;当这个宫殿中的一部分珍贵记忆突然消失&#xff0c;仿佛历史的片段被无情地抹去&#xff0c;我们不禁会感到焦虑和恐慌。此时&#xff0c;电脑…

【播客笔记】摸着大佬入门!把〖AI+能源〗〖AI+硬件〗两个热门话题彻底聊透! | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 1. 硅谷101 | 科技巨头们开始抢电&#xff1f;聊聊AI用电荒和核聚变创业热 播客链接 → https://www.xiaoyuzhoufm.com/episode/663035780571efa80f8…

基于springboot在线考试报名系统-计算机毕业设计源码031706

摘 要 随着计算机技术的迅猛发展&#xff0c;学校教学和管理的信息化发展也有长足的进步&#xff0c;考试也是一样。与传统的考试方式相比&#xff0c;网络考试报名系统极大地提高了考试的灵活性&#xff0c;并在许多领域已经有了广泛的应用。网上考试报名系统的最大优点是可以…

Java基础入门day69

day69 mybatis 开发步骤 查询 前期准备&#xff1a;数据库表结构和表数据准备 mysql> select * from user; ------------------------------------------------ | uid | username | password | email | phone | address | ---------------------------------------------…

2、广告-参与者

程序化广告生态系统中的参与者主要分为五大类&#xff1a;需求方、需求方服务、流量供应方、流量方服务以及广告服务与数据管理相关平台和企业。以下是每个角色的详细描述&#xff0c;以及中文名词与其对应的英文名词。 一、需求方&#xff08;Demand Side&#xff09; 效果类…

视频文件太大怎么压缩?十大视频压缩软件可解决您的问题

您是否已经受够了无法上传视频文件&#xff0c;因为它们太大了&#xff1f;如果您正在积极寻找免费下载的视频压缩软件&#xff0c;下面概述了目前在线提供的 10 个功能更强大的软件。 我们建议您在决定下载之前先通读一下这个简短的介绍。我们不希望您随意点击一个选项&#…

2024年JCR分区,将发生重大变化

科睿唯安官方微信发布消息&#xff0c;指出今年的期刊排名及相应JCR分区将发生重大变化。 原文比较长&#xff0c;不熟悉相关规则的朋友也不太容易读懂。因此&#xff0c;我们今天做一个详细的解读。 首先明确几个基本概念&#xff1a; &#xff08;1&#xff09;2024年发布2…

基于PHP+MySql的留言管理系统的设计与实现

功能概述 网页留言板管理系统&#xff0c;用户层面分为普通用户和管理员&#xff0c;并设权限&#xff08;即后台留言管理系统普通用户不能访问&#xff0c;别人的留言自己不可以修改删除&#xff0c;未登录不能使用留言功能&#xff09;&#xff0c;功能包括用户登录注册、留…

阿里云+Halo个人博客搭建

前言 本文将介绍使用阿里云Halo搭建一个个人网站&#xff0c;过程极其简单&#xff0c;不需要什么计算机基础&#xff0c;操作电脑跟着步骤做就行。 在开始之前&#xff0c;还需要做一些前置准备 购买好服务器&#xff0c;本文使用阿里云&#xff0c;系统选择CentOS 7.6 64位…

Ollama:一个在本地部署、运行LLM大型语言模型的工具

Ollama部署、运行大型语言模型 概述 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计的工具。 官方网站&#xff1a;https://ollama.com/ Github&#xff1a;https://github.com/ollama/ollama 安装 Ollama支持macOS、Linux和Win…

【MOS管线性区如何让调整】

1.怎样设定管子的Vdsat大小&#xff1f; 各管的Vdsat完全决定于管子的偏置栅压Vg而不用去考虑Vs&#xff0c;由于Vgs决定电流Id而反过来偏置电流Id决定Vgs&#xff0c;确定的电流偏置下Vs会自动跟随Vg而得到合适的Vgs&#xff0c;连接于同一个Vg栅压偏置的各管会有同样大小的Vd…

[吃瓜教程]南瓜书第3章对数几率回归

第三章 对数几率回归 3.1 算法原理 对数几率回归&#xff08;Logistic Regression&#xff09;是一种统计方法&#xff0c;主要用于二分类问题。它通过拟合一个对数几率函数&#xff08;logit function&#xff09;&#xff0c;即对数几率&#xff08;log-odds&#xff09;与…

构建基于LLM的高效知识库问答系统:MaxKB一站式开源解决方案探析

随着人工智能技术的飞速发展,尤其是大型语言模型(LLMs)的广泛应用,知识管理与交互进入了新的纪元。今天,我们将深入探讨一个创新的开源项目——MaxKB,这是一个集成了最新技术、旨在提供一站式解决方案的知识库问答系统。MaxKB以其开箱即用、高度可定制性以及对多种主流大…

python并发执行request请求

在Python中&#xff0c;我们可以使用requests库来发送HTTP请求&#xff0c;并使用threading、multiprocessing、asyncio&#xff08;配合aiohttp&#xff09;或concurrent.futures等库来并发执行这些请求。这里&#xff0c;我将为我们展示使用concurrent.futures.ThreadPoolExe…