STM32
直播中

niu!kf

13年用户 601经验值
私信 关注
[问答]

cubeMX生成的FreeRTOS代码框架该如何去实现呢

cubeMX生成的FreeRTOS代码框架该如何去实现呢?

基于CubeMX+FreeRTOS框架所建立的用户文件如何去实现呢?

回帖(1)

张永强

2021-12-17 10:05:30
常用指令

缩进2字符:
  
常用字体颜色大小类型设置例程
整段字体设置

中间段字体设置
中间写你的文字
图片大小设置
在图片的最后面的)前面加上 空格=??x
问号是写图片的大小,一般300到500即可
搜狗输入法快捷键自定义输出需求内容

快捷键zs
首选:普通注释
//  其次1:函数的介绍

// 函  数:
// 参  数:
// 返回值:
// 备  注:
//-----------------------------------------------------------------------------------------------------------------


//-----------------------------------------------------------------------------------------------------------------
其次2:用于宏定义或者分功能模块这些

//
//-----------------------------------------------------------------------------------------------------------------


//-----------------------------------------------------------------------------------------------------------------

快捷键bk
用于CSDN写博客的文本格式设置
首选1

其次2
  
其次3

cubeMX生成的FreeRTOS代码框架

模板配置步骤
①打开cubeMX选择芯片
②选择晶振(打开了外部的低速和高速晶振)





③配置调试接口和HAL库定时器(systick定时器给FreeRTOS用了,所以HAL库用TIM1)





④打开串口(不是必要的,主要是为了能串口输出打印数据)





⑤配置FreeRTOS(V1和V2区别在哪儿我也不知道,我一般用V2)





⑥配置系统时钟,输入后按Enter确定





⑦配置工程路径及生成哪种编译器支持的工程(路径不能为中文,否则可能生成失败)





⑧生成独立的.c和.h文件





这里可选择是HAL库生成代码还是LL库生成





⑨点击生成代码





生成的文件夹一览(1、2、3、4是自己新建的文件夹,其他的是系统生成的)





文件夹1:存放外设硬件驱动及功能实现
文件夹2:存放公共文件
文件夹3:存放测试例程代码
文件夹4:主要用于记录工程的更新记录
在MDK中药包含这几个文件的头文件路径
基于CubeMX+FreeRTOS框架所建立的用户文件

include.h文件

#ifndef   _INCLUDE_H
#define   _INCLUDE_H


// 头文件定义区域
//-----------------------------------------------------------------------------------------------------------------
// 这部分用来识别不同的芯片所包含的hal库顶层头文件的
#ifdef  STM32F103xE
#include "stm32f1xx_hal.h"
#endif
#ifdef  STM32F407xx
#include "stm32f4xx_hal.h"
#endif


// 这是类型重定义的头文件
#include        "stdint.h"


// 这是hal库生成后自带的头文件
#include        "main.h"
#include        "FreeRTOS.h"
#include        "cmsis_os.h"


// 这下面则是用户自己定义的头文件
//#include        "public.h"
//#include  "test.h"
//#include  "adc1.h"
//#include  "key.h"
//#include  "lcd.h"
//#include  "led.h"
//#include  "nrf24l01.h"
//#include  "pwm.h"
//#include  "spi1.h"
//#include  "spi3.h"
//#include  "sys.h"
//#include  "usart1.h"
//#include  "w25qxx.h"
//-----------------------------------------------------------------------------------------------------------------






// 这里是各种STM32外设用到的外设句柄的外部声明
//-----------------------------------------------------------------------------------------------------------------
//extern        TIM_HandleTypeDef htim2;                // PWM波
//extern        TIM_HandleTypeDef htim3;                // 计时器
//extern        UART_HandleTypeDef huart1;        // 串口
//extern        SPI_HandleTypeDef hspi1;                // Flash通信
//extern        SPI_HandleTypeDef hspi3;                // NRF通信
//-----------------------------------------------------------------------------------------------------------------






//定义一些常用的数据类型短关键字(必须要包含stdint.h头文件)
//-----------------------------------------------------------------------------------------------------------------
typedef                      int32_t         s32;
typedef                      int16_t         s16;
typedef                      int8_t          s8;


typedef const                int32_t         sc32;  
typedef const                int16_t         sc16;  
typedef const                int8_t          sc8;  


typedef __IO                 int32_t         vs32;
typedef __IO                 int16_t         vs16;
typedef __IO                 int8_t          vs8;

typedef __I                  int32_t         vsc32;  
typedef __I                  int16_t         vsc16;
typedef __I                  int8_t          vsc8;   


typedef                      uint32_t        u32;
typedef                      uint16_t        u16;
typedef                      uint8_t         u8;


typedef const                uint32_t        uc32;  
typedef const                uint16_t        uc16;  
typedef const                uint8_t         uc8;


typedef __IO                 uint32_t        vu32;
typedef __IO                 uint16_t        vu16;
typedef __IO                 uint8_t         vu8;


typedef __I                  uint32_t        vuc32;  
typedef __I                  uint16_t        vuc16;
typedef __I                  uint8_t         vuc8;         
//-----------------------------------------------------------------------------------------------------------------


#endif
sys.h文件

#ifndef  _SYS_H
#define  _SYS_H


//定义结构体类型
typedef struct
{
        void (*pfunSysInit)(void);
} sysInit_t;




// 声明区域
//-----------------------------------------------------------------------------------------------------------------
// 结构体变量声明
extern sysInit_t  sysInit;




// 函数声明
static void Sys_Init(void);
//-----------------------------------------------------------------------------------------------------------------




#endif


sys.c文件

#include        "sys.h"




// 定义结构体并赋值
//-----------------------------------------------------------------------------------------------------------------
sysInit_t sysInit =
{
        Sys_Init
};
//-----------------------------------------------------------------------------------------------------------------




// 硬件初始化函数
static void Sys_Init(void)
{
       
}
举报

更多回帖

×
20
完善资料,
赚取积分