Add 24_TIM1_PWM_VET6

This commit is contained in:
2026-08-23 11:53:31 -07:00
parent a9a71b5018
commit f06ef88671
153 changed files with 172470 additions and 16 deletions
@@ -28,6 +28,7 @@ extern "C" {
/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_hal.h"
#include "stm32f4xx.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
@@ -8,20 +8,21 @@ uint32_t HCLK_freq;
uint32_t PCLK1_freq;
uint32_t PCLK2_freq;
#define LED0_Pin GPIO_PIN_13
// LED: GPIO_PIN_13
static void LED_GPIO_Init(void);
TIM_HandleTypeDef htim3;
static void TIM3_Init(void);
UART_HandleTypeDef huart1;
static void LED_GPIO_Init(void);
static void USART1_UART_Init(void);
// Override for printf function
int __io_putchar(int ch) {
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
HAL_UART_Transmit(&huart1, (uint8_t*) &ch, 1, HAL_MAX_DELAY);
return ch;
}
void SystemClock_Config(void);
int main(void) {
@@ -31,17 +32,10 @@ int main(void) {
SystemClock_Config();
LED_GPIO_Init();
USART1_UART_Init();
TIM3_Init();
while (1) {
HAL_GPIO_WritePin(GPIOE, LED0_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOE, LED0_Pin, GPIO_PIN_SET);
HAL_Delay(500);
printf("Hello World!\r\n");
}
}
@@ -52,10 +46,10 @@ static void LED_GPIO_Init(void) {
__HAL_RCC_GPIOE_CLK_ENABLE();
HAL_GPIO_WritePin(GPIOE, LED0_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_13, GPIO_PIN_SET);
// Configure LED0_Pin
GPIO_InitStruct.Pin = LED0_Pin;
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
@@ -94,6 +88,38 @@ static void USART1_UART_Init(void) {
}
// Configure timer to timeout every second
// System clock = 168 000 000 Hz
// PCLK1 = 42 MHz for APB1 peripheral clock
// = 84 MHz for APB1 timer clock
// PCLK2 = 84 MHz for APB2 peripheral clock
// = 168 MHz for APB2 timer clock
static void TIM3_Init(void) {
__HAL_RCC_TIM3_CLK_ENABLE();
htim3.Instance = TIM3;
htim3.Init.Prescaler = 8400 - 1; // 84000000 / 8400 = 10KHz
htim3.Init.Period = 10000 - 1; // 10000 / 10000 = 1Hz
htim3.Init.ClockDivision = 0;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
HAL_TIM_Base_Init(&htim3);
// Enable interrupt
HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM3_IRQn);
// Start the TIM base generation in interrupt mode
HAL_TIM_Base_Start_IT(&htim3);
}
void TIM3_IRQHandler(void) {
// Call HAL_TIM_PeriodElapsedCallback()
HAL_TIM_IRQHandler(&htim3);
}
/**
* @brief System Clock Configuration
* @retval None
@@ -164,6 +190,10 @@ void SystemClock_Config(void) {
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM7) {
HAL_IncTick();
} else if (htim->Instance == TIM3) {
// Executes every TIM3 update event
printf("Toggle LED every 1s!\r\n");
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_13);
}
}