首页 > 其他分享 >CubeMX新建项目

CubeMX新建项目

时间:2024-07-11 09:57:38浏览次数:18  
标签:文件 CODE 头文件 项目 新建 System USER CubeMX define

cubemx程序设置

image

image

然后进行时钟设置:

先从原理图找到高速晶振时钟,比如说这个为25M,

image

这个为8M:

image

OSC接外部高速晶振,用来用来产生的高速外部用户时钟,OSC32接外部低速晶振。

一般来说路线选择:

​​image

image

直接在HCLK里面选择板子最大主频,就会自动选择了,不一定要按上面的路线进行抉择。

选择分类别生成:

image

搭建程序框架

程序框架的实现

图片

一、新增MyApplication文件夹和组

放置4个标准c文件,分别是公共文件,回调文件,系统文件,用户初始化文件,后续应用代码均放在此文件夹;

image

image​​

二、新增MyApplication.h文件

包含所有用户代码的头文件与外设头文件,调整外设或用户文件,只需要调整此文件内的相应头文件即可;

image

image

3、main.c文件标准化。

此视频为腾讯视频地址不能直接下载 ,右键此处可复制地址

<iframe allow="autoplay; fullscreen" allowfullscreen="true" data-src="https://v.qq.com/txp/iframe/player.html?origin=https%3A%2F%2Fmp.weixin.qq.com&containerId=js_tx_video_container_0.683980901263491&vid=o3137gfrn6k&width=677&height=380.8125&autoplay=false&allowFullScreen=true&chid=17&full=true&show1080p=false&isDebugIframe=false" frameborder="0" height="380.8125" src="https://v.qq.com/txp/iframe/player.html?origin=https%3A%2F%2Fmp.weixin.qq.com&containerId=js_tx_video_container_0.683980901263491&vid=o3137gfrn6k&width=677&height=380.8125&autoplay=false&allowFullScreen=true&chid=17&full=true&show1080p=false&isDebugIframe=false" width="677"></iframe>

三、MyApplication.h

图片

1、此文件放置于main.c与应用代码文件中,作为头文件的集合;

2、更改处理器外设或应用代码,此文件需要相应的增加或删除相应的头文件。

四、main.c文件

1、添加头文件集合

图片

image​​

2、添加用户初始化函数

图片

3、标准化主循环

图片

image

 MyInit.Peripheral_Set();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    System.Run();
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

4、标准化错误处理函数

图片

5、标准化断言失败处理函数

图片


/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  System.Error_Handler();
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
	System.Assert_Failed();
  /* USER CODE END 6 */
}

五、system文件

1、头文件

图片

主要定义结构体类型System_t,包含3个函数指针,分别为函数运行,系统错误处理,断言失败处理,被main.c文件调用。

2、源文件

图片

主要定义结构体System以及3个函数,并将3个函数的名称(首地址)赋值给System结构体,完成结构体的初始化。 如此一来,main.c文件可以通过System结构体的函数指针调用System.c文件的3个函数了。

Run函数:用户应用代码;

Error_Hander函数:系统错误处理代码;

Asset_Failed函数: 断言失败处理代码。

六、Run函数

图片

作为功能演示,简单的实现了LED1间隔1s闪烁。

public下的串口调试

头文件:

#ifndef __PUBLIC_H_
#define __PUBLIC_H_

/* Public define-------------------------------------------------------------*/
#define SoftWare_Version 	(float)1.0
#define	huart_debug		huart1

//定义枚举类型 -> TRUE/FALSE位
typedef enum 
{
  FALSE = 0U, 
  TRUE = !FALSE
} FlagStatus_t;

typedef enum 
{
  FAILED = 0U, 
  PASSED = !FAILED
} TestStatus_t;
//定义结构体类型

/* extern variables-----------------------------------------------------------*/

/*******预编译宏定义*******/
//#define Monitor_Run_Code   //代码运行监控器 
//#define Hardware_TEST      //硬件测试

#endif
/********************************************************
  End Of File
********************************************************/

c文件:

/* Includes ------------------------------------------------------------------*/
#include "MyApplication.h"

/* Private define-------------------------------------------------------------*/

/* Private variables----------------------------------------------------------*/

/* Public variables-----------------------------------------------------------*/

/* Private function prototypes------------------------------------------------*/    
/*
    * @name fputc
    * @brief fputc映射物理串口
    * @param ch->待发送字符
    * @retval ch->待发送字符
*/
int fputc(int ch,FILE* f){
    //通过查询的方式循环发送
    HAL_UART_Transmit(&huart_debug,(uint8_t *)&ch,1,0x000A);
    return ch;
}
/********************************************************
  End Of File
********************************************************/

记得在头文件加上usart.h。

在vscode中要注意

在vs已经打开的mdk项目中,又重新修改了cubemx初始化的,要重新在Core里面加核心文件。我这里重新加了一个dma,所以现在要自己加进去。

image

标签:文件,CODE,头文件,项目,新建,System,USER,CubeMX,define
From: https://www.cnblogs.com/rose24/p/18295465/cubemx-new-project-z1j7bzp

相关文章

  • cubemx+hal stm32 atgm336h GPS 北斗 定位 模块 驱动代码
    usart2.cgps的串口2设置voidMX_USART2_UART_Init(void){/*USERCODEBEGINUSART2_Init0*//*USERCODEENDUSART2_Init0*//*USERCODEBEGINUSART2_Init1*//*USERCODEENDUSART2_Init1*/huart2.Instance=USART2;huart2.Init.BaudRate......
  • 一文带你快速了解项目ASPICE评估的那些事-MUNIK
    01、摘要随着汽车电动化、智能化和互联化不断演进,汽车的电子电气架构得到持续升级,而汽车硬件方面逐渐趋向标准化。与此同时,汽车软件呈现出不断多样化和日益复杂的趋势。在这个大背景下,传统的软件开发流程已经无法满足这一需求,我们需要建立一套合理的软件开发体系,以更好地应对......
  • docker部署若依开源java项目微服务版
    查看容器IDdockerps 后面以进入mysql容器为例进入容器sudodockerexec-it27e/bin/bash 进入成功,由于是mgsql容器,我们可以输入命令操作看一下mysql文件夹,如下看到了我们建的数据库:退出容器回到centosexit......
  • Scrum项目敏捷管理
    一 什么是Scrum敏捷开发Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发,包括一系列实践和预定义角色的过程。Scrum中文翻译:橄榄球。Scrum使用于大中小型项目,核心内容是:团队框架和软件开发框架。Scrum需求是“涌现”的,不要试图初期就明确细化全部需求,通过“用户故事......
  • Dockerfile构建前后端分离项目
    【Dockerfile构建前后端分离项目】1.创建专用网络dockernetworkcreateappnet2.构建MYSOL服务器镜像2.1.准备工作创建专用目录mkdirapp/db-p获取配置文件#创建一个存放数据库配置文件的文件夹cdapp/db#创建临时mysql容器,目的是将里面的配置文件拷贝出来......
  • GitHub每日最火火火项目(7.10)
    项目名称:public-apis/public-apis项目介绍:这是一个集体列表,包含了各种免费的APIs。它可能为开发者提供了一个方便的资源,使他们能够更容易地找到和使用所需的APIs,从而加速开发进程。通过整合众多的免费APIs,该项目有助于促进开发社区的共享和合作,让开发者能够更高效......
  • python项目导入上级目录设置”的setting.json是不是哪里还有错误呀?
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【王者级混子】问了一个Python代码处理的问题,问题如下:大佬们,我想问问我抄网上“vscode运行python项目导入上级目录设置”的setting.json是不是哪里还有错误呀?还是没法导入上级目录二、实现过程这里后来很快他自己找......
  • 把本地已经创建的项目推送到gitee上新创建的同名仓库
    1.在gitee上新建项目demo-programe创建后,如下:2.在本地创建同名项目文件2.1.进入文件夹2.2.在文件夹里面,初始化文件夹(gitinit)gitinit2.3.把.gitignore文件加入文件夹中2.4..gitignore文件内容如下3.把本地demo-programe文件夹推送到gitee新建的demo-programe......
  • springboot项目一直在打印Redis链接信息Reconnecting, last destination was
    控制台打印如下:15:03:26.279[lettuce-eventExecutorLoop-1-4]INFOi.l.c.p.ConnectionWatchdog-[log,171]-Reconnecting,lastdestinationwas/192.168.0.6:637915:03:26.282[lettuce-nioEventLoop-4-2]INFOi.l.c.p.ReconnectionHandler-[lambda$null$3,174]-Rec......
  • 【STM32项目】基于Stm32搞怪盒子的设计(完整工程资料)
    基于stm32搞怪的盒子设计前言:最近我看到一个极具创意的搞怪盒子,设计得相当有意思。作为一个热衷于电子DIY的狂热爱好者,怎能错过这样一个有趣的项目呢?于是,我决定亲自动手,设计一个属于自己的、独一无二的搞怪盒子。下面是我设计的详细过程和思路,希望能够为你带来一些启发。......