新手入门 
 
	- 积分
 - 11
 
        - 金钱
 - 11 
 
       - 注册时间
 - 2022-3-24
 
      - 在线时间
 - 2 小时
 
 
 
 | 
 
经测试,修改参数可达到接近2Mhz的采样间隔,但是一旦达到2Mhz,串口就接收不到数据。请问是什么原因造成的? 
下面代码是定时器1的初始化代码,修改了时钟分频系数为1,因此定时器1的时钟频率为72Mhz 
void MX_TIM1_Init(void) 
{ 
 
  /* USER CODE BEGIN TIM1_Init 0 */ 
 
  /* USER CODE END TIM1_Init 0 */ 
 
  TIM_ClockConfigTypeDef sClockSourceConfig = {0}; 
  TIM_MasterConfigTypeDef sMasterConfig = {0}; 
  TIM_OC_InitTypeDef sConfigOC = {0}; 
  TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; 
 
  /* USER CODE BEGIN TIM1_Init 1 */ 
 
  /* USER CODE END TIM1_Init 1 */ 
  htim1.Instance = TIM1; 
  htim1.Init.Prescaler = 1-1; 
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP; 
  htim1.Init.Period = 72-1; 
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; 
  htim1.Init.RepetitionCounter = 0; 
  htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; 
  if (HAL_TIM_Base_Init(&htim1) != HAL_OK) 
  { 
    Error_Handler(); 
  } 
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; 
  if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) 
  { 
    Error_Handler(); 
  } 
  if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) 
  { 
    Error_Handler(); 
  } 
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; 
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; 
  if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) 
  { 
    Error_Handler(); 
  } 
  sConfigOC.OCMode = TIM_OCMODE_PWM1; 
  sConfigOC.Pulse = 36; 
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; 
  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; 
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; 
  sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; 
  sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; 
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) 
  { 
    Error_Handler(); 
  } 
  sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; 
  sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; 
  sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; 
  sBreakDeadTimeConfig.DeadTime = 0; 
  sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; 
  sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; 
  sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; 
  if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) 
  { 
    Error_Handler(); 
  } 
  /* USER CODE BEGIN TIM1_Init 2 */ 
//        if(HAL_TIM_OC_Start( &htim1,TIM_CHANNEL_1) != HAL_OK)//启动通道1的PWM输出 
//        { 
//                Error_Handler(); 
//        } 
  /* USER CODE END TIM1_Init 2 */ 
 
} 
 
 |   
 
 
 
 |