
芯片: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); } } }
|
在使用nucleo H7开发版 USART2发送数据测试的时候,RTS脚产生与TX脚一样的伴随波形,波形与TX脚一致
HRTIM 变频控制输出的第一个周期频率异常
stm32cubemx F103芯片tim3 encoder模式pc6和pc7引脚,自动生成代码缺少gpio映射。
STM32G070RET6,中断优先级配置没有效果
STM32G474 利用高精度HRTIM怎么捕获外部波形计算波形频率,想用STM32Cube配置工程代码,网上查了很多资料,没有看到这个用法。希望大神指导一下。
STM32G473 定时器事件触发DMAburst传输错位?
STM32H743VIT6 HAL 串口DMA发送掉帧
STM32G4高级定时器配置互补输出驱动出现波形抖动
添加PWM,板卡无设备
STM32G474CBT6 串口通信问题
重定向的时候要有一个while 函数等待发送完成之后再发送另一个字节,都是这样处理的。
建议楼主也用最简单的代码试试,排除逻辑上出错的可能。
STM32CubeIDE printf浮点数,浮点数丢失数值 (stmicroelectronics.cn)