欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32CubeMX 不生成main()函数入口

程序员文章站 2022-03-16 19:26:21
...

前言

    用STM32CubeMX 生成的代码里有很多注释,看代码时候觉得很碍眼.当然也可以删除,如果再次生成代码的话注释也一样生成,而且定义的变量 声明 私有函数必须放在 "USER CODE BEGIN"和"USER CODE END"之间写,否则重新生成的代码会覆盖你写的代码.

为了能有干净写代码环境于是将main()函数入口放置在自己建的.c文件里,尽量不动STM32CubeMX生成的代码,下面是步骤

1. 配置好参数后在ProjectManage里 把不生成main()的勾打上

STM32CubeMX 不生成main()函数入口

2. 在 Advanced Sett 里把 Visibility(Static) 前面的勾去掉,因为需要在自己建的.c文件里调用函数

STM32CubeMX 不生成main()函数入口

然后生成代码.

 

新建自己的.C文件

   生成的main.c文件里没有main()入口,然后自己新建个.c文件把main()入口放进去,中断的话可以使用回调函数,一样放在这个.c的文件里

user.c

#include "main.h"

//调用函数,第2步里去掉Static是为了能在外部文件调用函数
void SystemClock_Config(void);
void MX_GPIO_Init(void);
void MX_USART1_UART_Init(void);

int main(void)//int 类型
{ 
  //这些初始化要记得加上
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  while (1)
  {
    HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
    HAL_Delay(500);
  }
}

/*EXTI_回调函数*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    UNUSED(GPIO_Pin);
    if (GPIO_Pin == GPIO_PIN_2)
    {
        //中断处理代码
    }
}

注意:用到中断的话需要生成中断服务函数入口和调用处理函数(默认生成),core内核的中断函数不用可以去掉,只保留System tick timer 就可以了

STM32CubeMX 不生成main()函数入口

 

 

 

 

 

 

相关标签: MCU