Add 24_TIM1_PWM_VET6
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user