
芯片: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); } } }
|
STM32F103C8出現找不到'STM32100B_EVAL/stm32100b_eval.h' file not found
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
STM32的DCode bus是连接到bus matrix的吗?参考手册描述和图片是不符吗?
STM32N6570-DK开发板,哪里还有卖的?
stm32f407无法配置定时器2为全部dma
定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?
求助,使用51单片机和VL6180X传感器测距,结果一直是0是什么原因,能读到ID为0xB4
STM32F103TBU6 封装是VFQFPN36 将PD0和PD1配置成CAN不成功是什么原因
分享一个PWM+DMA的BUG
串口DMA + 空闲中断收发 ?
重定向的时候要有一个while 函数等待发送完成之后再发送另一个字节,都是这样处理的。
建议楼主也用最简单的代码试试,排除逻辑上出错的可能。
STM32CubeIDE printf浮点数,浮点数丢失数值 (stmicroelectronics.cn)