[STM32F1] STM32CUBEMX做输入捕获的时候,高电平时间不变

[复制链接]
467|2
 楼主| 王小琪 发表于 2020-11-4 19:55 | 显示全部楼层 |阅读模式
如题,我用STM32CUBEMX生成的工程,做输入捕获的时候,高电平时间不变。如下图,高电平时间一直都是192us,但实际我用示波器测量的是300us和400us。
  1. __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);//高电平为400us
  2. __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 300);//高电平为300us
我只改动了上面一句,实际用示波器测量效果和代码可以对得上。
974195fa2965bd0bcf.png    899555fa29671a691b.png
可是串口调试助手却一直都是显示192us不变,代码如下,求解。
479605fa2968c50802.png

  1. int main(void)
  2. {
  3.   /* USER CODE BEGIN 1 */

  4.   /* USER CODE END 1 */
  5.   

  6.   /* MCU Configuration--------------------------------------------------------*/

  7.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  8.   HAL_Init();

  9.   /* USER CODE BEGIN Init */

  10.   /* USER CODE END Init */

  11.   /* Configure the system clock */
  12.   SystemClock_Config();

  13.   /* USER CODE BEGIN SysInit */

  14.   /* USER CODE END SysInit */

  15.   /* Initialize all configured peripherals */
  16.   MX_GPIO_Init();
  17.   MX_TIM3_Init();
  18.   MX_TIM5_Init();
  19.   MX_USART1_UART_Init();
  20.   /* USER CODE BEGIN 2 */
  21.           HAL_TIM_IC_Start_IT(&htim5,TIM_CHANNEL_1);        //一定要开启TIM5通道1的捕获中断
  22.   __HAL_TIM_ENABLE_IT(&htim5,TIM_IT_UPDATE);        //一定要开启TIM5的更新中断
  23.                 HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
  24.                 printf("准备开始采集高电平...\r\n");
  25.   /* USER CODE END 2 */

  26.   /* Infinite loop */
  27.   /* USER CODE BEGIN WHILE */
  28.   while (1)
  29.   {
  30.     /* USER CODE END WHILE */

  31.     /* USER CODE BEGIN 3 */
  32.         __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);
  33.         HAL_Delay(500);
  34.         if(TIM5CH1_CAPTURE_STA & 0X80)
  35.         {                //完成一次高电平捕获
  36.                 temp = TIM5CH1_CAPTURE_STA & 0X3F;
  37.                 temp *= 65536;                                //溢出总时间
  38.                 temp += TIM5CH1_CAPTURE_STA;        //总的高电平时间
  39.                 printf("高电平时间:%lld us\r\n",temp);
  40.                 TIM5CH1_CAPTURE_STA = 0;                //准备下一次捕获
  41.         }

  42.   }
  43.   /* USER CODE END 3 */
  44. }


  45. int main(void)
  46. {
  47.   /* USER CODE BEGIN 1 */

  48.   /* USER CODE END 1 */
  49.   

  50.   /* MCU Configuration--------------------------------------------------------*/

  51.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  52.   HAL_Init();

  53.   /* USER CODE BEGIN Init */

  54.   /* USER CODE END Init */

  55.   /* Configure the system clock */
  56.   SystemClock_Config();

  57.   /* USER CODE BEGIN SysInit */

  58.   /* USER CODE END SysInit */

  59.   /* Initialize all configured peripherals */
  60.   MX_GPIO_Init();
  61.   MX_TIM3_Init();
  62.   MX_TIM5_Init();
  63.   MX_USART1_UART_Init();
  64.   /* USER CODE BEGIN 2 */
  65.           HAL_TIM_IC_Start_IT(&htim5,TIM_CHANNEL_1);        //一定要开启TIM5通道1的捕获中断
  66.   __HAL_TIM_ENABLE_IT(&htim5,TIM_IT_UPDATE);        //一定要开启TIM5的更新中断
  67.                 HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
  68.                 printf("准备开始采集高电平...\r\n");
  69.   /* USER CODE END 2 */

  70.   /* Infinite loop */
  71.   /* USER CODE BEGIN WHILE */
  72.   while (1)
  73.   {
  74.     /* USER CODE END WHILE */

  75.     /* USER CODE BEGIN 3 */
  76.         __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 400);
  77.         HAL_Delay(500);
  78.         if(TIM5CH1_CAPTURE_STA & 0X80)
  79.         {                //完成一次高电平捕获
  80.                 temp = TIM5CH1_CAPTURE_STA & 0X3F;
  81.                 temp *= 65536;                                //溢出总时间
  82.                 temp += TIM5CH1_CAPTURE_STA;        //总的高电平时间
  83.                 printf("高电平时间:%lld us\r\n",temp);
  84.                 TIM5CH1_CAPTURE_STA = 0;                //准备下一次捕获
  85.         }

  86.   }
  87.   /* USER CODE END 3 */
  88. }


捉虫天师 发表于 2020-11-4 21:25 | 显示全部楼层
配置没生效?
 楼主| 王小琪 发表于 2020-11-4 21:40 | 显示全部楼层

示波器可以抓到波形,说明输出是有的。串口可以打印192us,说明串口配置也是没问题的。但是串口没有读到正确的300,400us,应该是输入捕获哪里出问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

232

主题

585

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部