• STM32CubeMX systick bug?


    发觉用新版(V6.9.1)的它生成代码,会有问题。可能是 BUG。具体如下:

    一个简单的点灯程序,用 Keil MDK 5.38a(compiler version 6)编译。

    如果在变量前,不加上关键字“volatile”,是不会闪灯的。

    V6.8.1 也同样,但好象如果你的工程是在旧版本中,慢慢升一步步上来的,不会有事,如果是新建的就出问题。

    大家可以试试?

    main.c 中

    1. extern volatile uint32_t u32LedFlashTimeAdd;
    2. /* USER CODE END PTD */
    3. /* Private define ------------------------------------------------------------*/
    4. /* USER CODE BEGIN PD */
    5. /* USER CODE END PD */
    6. /* Private macro -------------------------------------------------------------*/
    7. /* USER CODE BEGIN PM */
    8. /* USER CODE END PM */
    9. /* Private variables ---------------------------------------------------------*/
    10. /* USER CODE BEGIN PV */
    11. /* USER CODE END PV */
    12. /* Private function prototypes -----------------------------------------------*/
    13. void SystemClock_Config(void);
    14. /* USER CODE BEGIN PFP */
    15. /* USER CODE END PFP */
    16. /* Private user code ---------------------------------------------------------*/
    17. /* USER CODE BEGIN 0 */
    18. /* USER CODE END 0 */
    19. /**
    20. * @brief The application entry point.
    21. * @retval int
    22. */
    23. int main(void)
    24. {
    25. /* USER CODE BEGIN 1 */
    26. u32LedFlashTimeAdd = 0;
    27. /* USER CODE END 1 */
    28. /* MCU Configuration--------------------------------------------------------*/
    29. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    30. HAL_Init();
    31. /* USER CODE BEGIN Init */
    32. /* USER CODE END Init */
    33. /* Configure the system clock */
    34. SystemClock_Config();
    35. /* USER CODE BEGIN SysInit */
    36. /* USER CODE END SysInit */
    37. /* Initialize all configured peripherals */
    38. MX_GPIO_Init();
    39. /* USER CODE BEGIN 2 */
    40. /* USER CODE END 2 */
    41. /* Infinite loop */
    42. /* USER CODE BEGIN WHILE */
    43. while (1)
    44. {
    45. //HAL_Delay(1);
    46. if(u32LedFlashTimeAdd > 5000)
    47. {
    48. u32LedFlashTimeAdd = 0;
    49. HAL_GPIO_TogglePin(Led_Flash_GPIO_Port,Led_Flash_Pin);
    50. }
    51. /* USER CODE END WHILE */
    52. /* USER CODE BEGIN 3 */
    53. }
    54. /* USER CODE END 3 */
    55. }

    stm32g0xx_it.c 中

    1. volatile uint32_t u32LedFlashTimeAdd;
    2. //...
    3. void SysTick_Handler(void)
    4. {
    5. /* USER CODE BEGIN SysTick_IRQn 0 */
    6. u32LedFlashTimeAdd++;
    7. /* USER CODE END SysTick_IRQn 0 */
    8. HAL_IncTick();
    9. /* USER CODE BEGIN SysTick_IRQn 1 */
    10. /* USER CODE END SysTick_IRQn 1 */
    11. }

  • 相关阅读:
    52_数据结构
    云开发校园微社区微信小程序源码/二手交易/兼职交友微信小程序开源源码
    智能井盖的工作原理是什么?万宾科技智能井盖传感器效果
    SpringCloud
    源代码转换:Tangible Software Solutions 23.10 Crack
    面向对象
    【算法面试必刷Java版四】合并两个排序的链表
    Zenmap安装及安装时遇到的问题解决办法(Windows)
    Qt+ICU识别文本文件编码并合并导出文本
    图解LeetCode——654. 最大二叉树(难度:中等)
  • 原文地址:https://blog.csdn.net/keith_cheung/article/details/132820146