硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1110|回复: 3
收起左侧

[ADC] V7的例程ADC配合 定时器触发,定时器配置的是PWM模式,ADC的触发源是CC1事件

[复制链接]

10

主题

14

回帖

44

积分

新手上路

积分
44
发表于 2022-1-18 15:37:32 | 显示全部楼层 |阅读模式
我想请问下硬汉大佬 ,V7的例程ADC配合 定时器触发,我看定时器配置的是PWM模式,ADC的触发源是CC1事件,请问下这是怎么回事?并且,文档上说配置 TIM1 的频率是 100KHz,这个速度就是 ADC 的触发频率。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-1-18 17:44:08 | 显示全部楼层
OC1

  1. /*
  2. *********************************************************************************************************
  3. *        函 数 名: TIM1_Config
  4. *        功能说明: 配置TIM1,用于触发ADC,当前配置的100KHz触发频率
  5. *        形    参: 无                                                                          
  6. *        返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. static void TIM1_Config(void)
  10. {
  11.         TIM_HandleTypeDef  htim ={0};
  12.         TIM_OC_InitTypeDef sConfig = {0};


  13.         /* 使能时钟 */  
  14.         __HAL_RCC_TIM1_CLK_ENABLE();
  15.       
  16.     /*-----------------------------------------------------------------------
  17.                 bsp.c 文件中 void SystemClock_Config(void) 函数对时钟的配置如下:

  18.         System Clock source       = PLL (HSE)
  19.         SYSCLK(Hz)                = 400000000 (CPU Clock)
  20.         HCLK(Hz)                  = 200000000 (AXI and AHBs Clock)
  21.         AHB Prescaler             = 2
  22.         D1 APB3 Prescaler         = 2 (APB3 Clock  100MHz)
  23.         D2 APB1 Prescaler         = 2 (APB1 Clock  100MHz)
  24.         D2 APB2 Prescaler         = 2 (APB2 Clock  100MHz)
  25.         D3 APB4 Prescaler         = 2 (APB4 Clock  100MHz)

  26.         因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;
  27.         因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;
  28.         APB4上面的TIMxCLK没有分频,所以就是100MHz;

  29.         APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM1
  30.         APB2 定时器有 TIM1, TIM8 , TIM15, TIM16,TIM17

  31.         APB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5

  32.     TIM12CLK = 200MHz/(Period + 1) / (Prescaler + 1) = 200MHz / 2000 / 1 = 100KHz
  33.         ----------------------------------------------------------------------- */  
  34.     HAL_TIM_Base_DeInit(&htim);
  35.    
  36.     htim.Instance = TIM1;
  37.         htim.Init.Period            = 1999;
  38.         htim.Init.Prescaler         = 0;
  39.         htim.Init.ClockDivision     = 0;
  40.         htim.Init.CounterMode       = TIM_COUNTERMODE_UP;
  41.         htim.Init.RepetitionCounter = 0;
  42.         HAL_TIM_Base_Init(&htim);
  43.    
  44.     sConfig.OCMode     = TIM_OCMODE_PWM1;
  45.     sConfig.OCPolarity = TIM_OCPOLARITY_LOW;

  46.     /* 占空比50% */
  47.     sConfig.Pulse = 1000;  
  48.     if(HAL_TIM_OC_ConfigChannel(&htim, &sConfig, TIM_CHANNEL_1) != HAL_OK)
  49.     {
  50.                 Error_Handler(__FILE__, __LINE__);
  51.     }

  52.     /* 启动OC1 */
  53.     if(HAL_TIM_OC_Start(&htim, TIM_CHANNEL_1) != HAL_OK)
  54.     {
  55.                 Error_Handler(__FILE__, __LINE__);
  56.     }
  57. }
复制代码


回复

使用道具 举报

10

主题

14

回帖

44

积分

新手上路

积分
44
 楼主| 发表于 2022-1-18 18:35:54 | 显示全部楼层

是的,我不明白的是配置的PWM模式,ADC的触发源是 CC1。如果说配置 的是输出比较模式,我能理解
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-1-19 00:43:19 | 显示全部楼层
chenjinyu923 发表于 2022-1-18 18:35
是的,我不明白的是配置的PWM模式,ADC的触发源是 CC1。如果说配置 的是输出比较模式,我能理解

这个随意。你可以试试其它模式,中断有CC信号输出就行。那个CC信号是在过程中产生的。
QQ截图20220119004939.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 16:41 , Processed in 0.262016 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表