芯片:STM32F103C8T6 环境:STM32CubeMX和STM32CubeIDE 库:STM32F1HAL 问题:TIM2定时5秒->UART1 printf打印浮点数,偶尔出现数据丢失。(printf打印放在main里面没有这个情况) 例子如 float A=25.6666;float B=24.7777; 实际打印出来: 第一种情况:A=2.0000;B=0.0000; 第二种情况:A=-2.0000; B=-26815615859885194199148049996411692254958731641184786755447122887443528060147093953603748596333806855380063716372972101707507765623893139892867298012168192.000000 偶尔会出现以上情况,除此之外正常打印浮点数。 void MX_TIM2_Init(void) { / USER CODE BEGIN TIM2_Init 0 / / USER CODE END TIM2_Init 0 / TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; / USER CODE BEGIN TIM2_Init 1 / / USER CODE END TIM2_Init 1 / htim2.Instance = TIM2; htim2.Init.Prescaler = 6400-1; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 50000-1; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; if (HAL_TIM_Base_Init(&htim2) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) { Error_Handler(); } / USER CODE BEGIN TIM2_Init 2 / / USER CODE END TIM2_Init 2 / } void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { if(tim_baseHandle->Instance==TIM2) { / USER CODE BEGIN TIM2_MspInit 0 / / USER CODE END TIM2_MspInit 0 / / TIM2 clock enable / __HAL_RCC_TIM2_CLK_ENABLE(); / TIM2 interrupt Init / HAL_NVIC_SetPriority(TIM2_IRQn, 11, 0); HAL_NVIC_EnableIRQ(TIM2_IRQn); / USER CODE BEGIN TIM2_MspInit 1 / / USER CODE END TIM2_MspInit 1 / } } void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) { if(tim_baseHandle->Instance==TIM2) { / USER CODE BEGIN TIM2_MspDeInit 0 / / USER CODE END TIM2_MspDeInit 0 / / Peripheral clock disable / __HAL_RCC_TIM2_CLK_DISABLE(); / TIM2 interrupt Deinit / HAL_NVIC_DisableIRQ(TIM2_IRQn); / USER CODE BEGIN TIM2_MspDeInit 1 / / USER CODE END TIM2_MspDeInit 1 / } } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == htim2.Instance) { float A=25.6666;float B=24.7777; if(printSoftwareVersion==1) { printSoftwareVersion=0; printf("Software Version: M01_200mA_V03 \r\n"); } if(printEnabled==1) { printf("T-Set:%.4f \r\n",A); printf("T-Act:%.4f \r\n",B); } } } |
STM32H7串口DMA无法使用
STM32F030C8T6串口初始化,卡在中断里面,是什么问题
请问各位前辈 , stm32cubeIDE 烧录报错Error! Failed to read target status 错误!读取目标器状态失败 ,需要怎么解决
STM32F103 ADC利用DMA进行采样问题求解
stm32 usart+dma
各位大佬,那位知道stm32cubeied报:函数声明了未被调用警告怎么解决?(函数声明只是oled的显示功能)函数并没有语法错误
编译器跳出警告:函数声明未被调用警告怎么解决这个问题?(函数声明只是一个OLED显示功能)
标准ID=0X80的接收中断问题,目前是无法执行中断回调中的功能
STM32MC WorkBench 6.2.1内置的profiler软件在连接(G431RB + IHM03)套件时报错:firmware error 0.2 。
使用ST-LINK Utility进行编程,勾选Full Flash Memory Checksum和设置读出保护后LSE不起振问题
重定向的时候要有一个while 函数等待发送完成之后再发送另一个字节,都是这样处理的。
建议楼主也用最简单的代码试试,排除逻辑上出错的可能。
STM32CubeIDE printf浮点数,浮点数丢失数值 (stmicroelectronics.cn)