ST意法半导体
直播中

万航渡路

9年用户 1406经验值
擅长:电源/新能源
私信 关注
[问答]

由stm32cubemx按照配置重新生成工程,bsp_SysTick.c一直没有呢?

STM32cubemx按照配置重新生成工程,bsp_Systick.c一直没有呢

回帖(2)

杨季赟

2025-3-10 15:08:08
Systickt处理函数通常不存在独立的文件,一般在stm32xxxx_it.c文件中有void SysTick_Handler(void)函数。
举报

王芳

2025-3-11 17:41:34

在使用STM32CubeMX生成工程时,bsp_SysTick.c 文件并不会自动生成,因为 bsp_SysTick.c 通常是一个用户自定义的文件,而不是由STM32CubeMX自动生成的标准文件。


STM32CubeMX主要生成与硬件配置相关的代码,例如时钟配置、外设初始化、引脚配置等。SysTick 是Cortex-M内核中的一个定时器,通常用于提供系统定时功能(如延时、任务调度等)。STM32CubeMX不会自动生成与 SysTick 相关的具体实现代码,因为它通常需要根据应用需求进行定制。


解决方法




  1. 手动创建 bsp_SysTick.c 文件



    • 如果你需要一个 bsp_SysTick.c 文件,可以手动创建它,并在其中实现你需要的功能,例如延时函数、定时器中断处理等。

    • 通常,bsp_SysTick.c 会包含 SysTick 定时器的初始化、中断处理函数以及相关的延时函数。




  2. 检查生成的代码



    • 在STM32CubeMX生成的代码中,SysTick 的初始化通常会在 main.cSystemClock_Config() 函数中完成。你可以检查这些文件,确保 SysTick 定时器已经正确配置。




  3. 使用HAL库的延时函数



    • 如果你只是需要简单的延时功能,可以使用HAL库提供的 HAL_Delay() 函数,它基于 SysTick 实现,并且不需要手动编写 bsp_SysTick.c




  4. 参考示例代码



    • STM32CubeMX通常会生成一个 main.c 文件,其中包含 SysTick 的基本配置。你可以参考这个文件,或者从STM32的官方示例代码中获取 SysTick 的使用方法。




示例代码


以下是一个简单的 bsp_SysTick.c 示例:


#include "bsp_SysTick.h"

volatile uint32_t SysTickCounter = 0;

void SysTick_Handler(void) {
    SysTickCounter++;
}

void bsp_SysTick_Init(void) {
    HAL_SYSTICK_Config(SystemCoreClock / 1000); // 1ms tick
}

void bsp_Delay_ms(uint32_t ms) {
    uint32_t start = SysTickCounter;
    while ((SysTickCounter - start) < ms);
}

main.c 中调用 bsp_SysTick_Init() 来初始化 SysTick,然后可以使用 bsp_Delay_ms() 函数进行延时。


总结


bsp_SysTick.c 是一个用户自定义的文件,STM32CubeMX不会自动生成它。你可以根据需要手动创建并实现相关功能,或者直接使用HAL库提供的 SysTick 相关函数。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分