欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3147|回復: 0
收起左側

STM32單片機PWM輸出一直是高電平,怎么解決?

[復制鏈接]
ID:42292 發表于 2023-9-2 15:18 | 顯示全部樓層 |閱讀模式
100黑幣
1、單片機:STM32L031G6U6
2、使用IO:PA6 TIM22 CH1   PA7 TIM22 CH2
3、時鐘配置:1.048M
TIM22配置頻率:晶振頻率1.048Mhz  預分頻系數為 0,自動重裝載值為 99,定時器溢出頻率,即PWM的周期,就是 1.048MHz/(0+1)/(99+1) = 10.048kHz
4、問題:不能輸出PWM波形,示波器測試的

使能時輸出高電平,不使能時輸出低電平
HAL_TIM_PWM_Start(&htim22,TIM_CHANNEL_1);  //開啟PWM輸出
HAL_TIM_PWM_Start(&htim22,TIM_CHANNEL_2);  //開啟PWM輸出


TIM22初始化的代碼

  1. static void MX_TIM22_Init(void)
  2. {

  3.   /* USER CODE BEGIN TIM22_Init 0 */
  4. __HAL_RCC_TIM22_CLK_ENABLE();
  5.   /* USER CODE END TIM22_Init 0 */
  6. __HAL_RCC_TIM22_CLK_ENABLE();
  7.   TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  8.   TIM_MasterConfigTypeDef sMasterConfig = {0};
  9.   TIM_OC_InitTypeDef sConfigOC = {0};

  10.   /* USER CODE BEGIN TIM22_Init 1 */

  11.   /* USER CODE END TIM22_Init 1 */
  12.   htim22.Instance = TIM22;
  13.   htim22.Init.Prescaler = 0;//晶振頻率1.048Mhz  預分頻系數為 0,自動重裝載值為 99,定時器溢出頻率,即PWM的周期,就是 1.048MHz/(0+1)/(99+1) = 10.048kHz
  14.   htim22.Init.CounterMode = TIM_COUNTERMODE_UP;
  15.   htim22.Init.Period = 99;
  16.   htim22.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  17.   htim22.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;//自動重裝載
  18.   if (HAL_TIM_Base_Init(&htim22) != HAL_OK)
  19.   {
  20.     Error_Handler();
  21.   }
  22.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  23.   if (HAL_TIM_ConfigClockSource(&htim22, &sClockSourceConfig) != HAL_OK)
  24.   {
  25.     Error_Handler();
  26.   }
  27.   if (HAL_TIM_PWM_Init(&htim22) != HAL_OK)
  28.   {
  29.     Error_Handler();
  30.   }
  31.   if (HAL_TIM_OnePulse_Init(&htim22, TIM_OPMODE_SINGLE) != HAL_OK)
  32.   {
  33.     Error_Handler();
  34.   }
  35.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  36.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  37.   if (HAL_TIMEx_MasterConfigSynchronization(&htim22, &sMasterConfig) != HAL_OK)
  38.   {
  39.     Error_Handler();
  40.   }
  41.   sConfigOC.OCMode = TIM_OCMODE_PWM1;// PWM模式1
  42.   sConfigOC.Pulse = 60;//初始化占空比
  43.   sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;//當定時器計數值小于CCR1_Val時為高電平*/
  44.   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  45.   if (HAL_TIM_PWM_ConfigChannel(&htim22, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  46.   {
  47.     Error_Handler();
  48.   }
  49.   if (HAL_TIM_PWM_ConfigChannel(&htim22, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
  50.   {
  51.     Error_Handler();
  52.   }
  53.   /* USER CODE BEGIN TIM22_Init 2 */

  54.   /* USER CODE END TIM22_Init 2 */
  55.     __HAL_RCC_GPIOA_CLK_ENABLE();
  56.     /**TIM22 GPIO Configuration
  57.     PA6     ------> TIM22_CH1
  58.     PA7     ------> TIM22_CH2
  59.     */
  60.           GPIO_InitTypeDef GPIO_InitStruct = {0};
  61.     GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  62.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  63.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  64.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  65.     GPIO_InitStruct.Alternate = GPIO_AF5_TIM22;
  66.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  67.                
  68.         
  69.   HAL_TIM_PWM_Start(&htim22,TIM_CHANNEL_1);  //開啟PWM輸出
  70.   //HAL_TIM_PWM_Start(&htim22,TIM_CHANNEL_2);  //開啟PWM輸出
  71.   __HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_1,50);  //設置默認的占空比值
  72.   //__HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_2,50);  //設置默認的占空比值
  73. }

復制代碼
主函數調用初始化


  1. int main(void)
  2. {
  3.                 static U8 LedTimer;
  4.                 U8 temp;
  5.                 HAL_Init();

  6.                 SystemClock_Config();
  7.                 MX_ADC_Init();
  8.                 MX_GPIO_Init();

  9.                 MX_TIM2_Init();   
  10.                 MX_TIM21_Init();
  11.           MX_TIM22_Init();  
復制代碼
主循環中持續輸出:

  1.   while (1)
  2.                 {
  3.                           __HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_1,50);  //設置默認的占空比值
  4.                         led_blink();
復制代碼



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表