Лабораторная работа № 3: Генерация сигнала ШИМ( PWM )
Цель работы:Генерировать ШИМ с помощью отладочной платы;генерировать сигнал в микроконтроллере с параметрами пользователя и управлять внешними устройствами сигналами с микроконтроллера.
Оборудование и программное обеспечение:платаSTM32F4 Discovery,среда разработки CubeMX и Keil.
Теоретический материал В таймерах имеется режим генерации ШИМ сигналов. Период сигнала задается регистром перезагрузки таймера. Заполнение импульсов задается регистром сравнения канала. Таймер может производить 4 ШИМ сигнала и синхронизировано соответственно генерировать 16 ШИМ сигналов. синхронизированно, позволяя генерирова Существует два режима для таймера: с выравниванием по фронту или центру Для получения ШИМ сигнала необходимо при конфигурации микроконтроллера в CubeMX задать эту настройку порта. К выводу МК подключаем альтернативную функцию GPIO_PinAFConfig, затем подключить функцию GPIO_Mode_AF и соответственно подключить библиотеку include "init.h". Проведем конфигурацию микроконтроллера в
Пример кода В программе сигнал ШИМ меняет яркость светодиода.
MX_GPIO_Init(); MX_TIM4_Init(); /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); /* USER CODE END 2 */
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ for(i=0;i<=524288;i++)
{
if(i<65536) TIM4->CCR1=i;
else if ((i>65535)&&(i<131072)) TIM4->CCR1=131071-i;
else if((i>131071)&&(i<196608)) TIM4->CCR2=i-131072;
else if ((i>196607)&&(i<262164)) TIM4->CCR2=262164-i;
else if((i>262163)&&(i<327680)) TIM4->CCR3=i-262164;
else if ((i>327679)&&(i<393216)) TIM4->CCR3=393216-i;
else if((i>393216)&&(i<458752)) TIM4->CCR4=i-393216;
else TIM4->CCR4=524288-i;
for(d=0;d<300;d++)
{
}
} } /* USER CODE END 3 */ } TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM4_Init 1 */
/* USER CODE END TIM4_Init 1 */ htim4.Instance = TIM4; htim4.Init.Prescaler = 0; htim4.Init.CounterMode = TIM_COUNTERMODE_UP; htim4.Init.Period = 65535; htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim4) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) { Error_Handler(); } sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) { Error_Handler(); } if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) { Error_Handler(); } if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) { Error_Handler(); } if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN TIM4_Init 2 */
/* USER CODE END TIM4_Init 2 */ HAL_TIM_MspPostInit(&htim4);
}
/** * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) {
/* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE();
} Ход работы
Порядок работы 1. На основе примера написать свой код в среде разработки и скомпилировать его. 2. Ознакомиться с работой программы. 3. Создать новый проект в среде CubeMX и Keil. 4. Скомпилировать код на плату и проверить работу на отладочной плате Discavery.
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему стероиды повышают давление?: Основных причин три... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (403)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |