Browse Source

Use brace initialization

makefile_for_cmsis
heck 2 years ago
parent
commit
c366902937
  1. 163
      src/main.c

163
src/main.c

@ -4,6 +4,8 @@
#include "usb_device.h" #include "usb_device.h"
#include "stm32f4xx_hal_cortex.h" #include "stm32f4xx_hal_cortex.h"
extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
DAC_HandleTypeDef hdac1; DAC_HandleTypeDef hdac1;
DMA_HandleTypeDef hdma_dac1; DMA_HandleTypeDef hdma_dac1;
TIM_HandleTypeDef htim2; TIM_HandleTypeDef htim2;
@ -11,14 +13,9 @@ TIM_HandleTypeDef htim6;
TIM_HandleTypeDef htim7; TIM_HandleTypeDef htim7;
RNG_HandleTypeDef hrng; RNG_HandleTypeDef hrng;
extern PCD_HandleTypeDef hpcd_USB_OTG_FS;
void sysclk_init(void) void sysclk_init(void)
{ {
RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
// Enable ALL the clocks // Enable ALL the clocks
__HAL_RCC_SYSCFG_CLK_ENABLE(); __HAL_RCC_SYSCFG_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE(); __HAL_RCC_PWR_CLK_ENABLE();
@ -63,33 +60,40 @@ void sysclk_init(void)
// Configure the main internal regulator output voltage // Configure the main internal regulator output voltage
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure. {
*/ // Initializes the RCC Oscillators according to the specified parameters
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; // in the RCC_OscInitTypeDef structure.
RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitTypeDef conf = {
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; .OscillatorType = RCC_OSCILLATORTYPE_HSE,
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; .HSEState = RCC_HSE_ON,
RCC_OscInitStruct.PLL.PLLM = 4; .PLL.PLLState = RCC_PLL_ON,
RCC_OscInitStruct.PLL.PLLN = 168; .PLL.PLLSource = RCC_PLLSOURCE_HSE,
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; .PLL.PLLM = 4,
RCC_OscInitStruct.PLL.PLLQ = 7; .PLL.PLLN = 168,
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { .PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 7,
};
if (HAL_RCC_OscConfig(&conf) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
}
/** Initializes the CPU, AHB and APB buses clocks {
*/ // Initializes the CPU, AHB and APB buses clocks
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_ClkInitTypeDef conf = {
RCC_CLOCKTYPE_PCLK2; .ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 |
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_CLOCKTYPE_PCLK2,
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; .SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; .AHBCLKDivider = RCC_SYSCLK_DIV1,
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; .APB1CLKDivider = RCC_HCLK_DIV4,
.APB2CLKDivider = RCC_HCLK_DIV2,
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { };
if (HAL_RCC_ClockConfig(&conf, FLASH_LATENCY_5) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
}
} }
// -------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------
@ -171,30 +175,37 @@ void gpio_init(void)
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
{ {
GPIO_InitTypeDef conf = { 0 }; // Button Blue
GPIO_InitTypeDef conf = {
conf.Pin = GPIO_PIN_0; .Pin = GPIO_PIN_0,
conf.Mode = GPIO_MODE_IT_RISING; .Mode = GPIO_MODE_IT_RISING,
conf.Pull = GPIO_NOPULL; .Pull = GPIO_NOPULL,
.Speed = GPIO_SPEED_LOW,
};
HAL_GPIO_Init(GPIOA, &conf); HAL_GPIO_Init(GPIOA, &conf);
} }
{ {
GPIO_InitTypeDef conf = { 0 }; // LED Green
GPIO_InitTypeDef conf = {
.Pin = GPIO_PIN_12,
.Mode = GPIO_MODE_OUTPUT_PP,
.Pull = GPIO_NOPULL,
.Speed = GPIO_SPEED_FREQ_LOW,
};
conf.Pin = GPIO_PIN_12;
conf.Mode = GPIO_MODE_OUTPUT_PP;
conf.Pull = GPIO_NOPULL;
conf.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOD, &conf); HAL_GPIO_Init(GPIOD, &conf);
} }
{ {
GPIO_InitTypeDef conf = { 0 }; // DAC1
GPIO_InitTypeDef conf = {
.Pin = GPIO_PIN_4,
.Mode = GPIO_MODE_ANALOG,
.Pull = GPIO_NOPULL,
.Speed = GPIO_SPEED_FREQ_HIGH,
};
conf.Pin = GPIO_PIN_4;
conf.Mode = GPIO_MODE_ANALOG;
conf.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &conf); HAL_GPIO_Init(GPIOA, &conf);
} }
} }
@ -206,9 +217,10 @@ void dac_init(void)
Error_Handler(); Error_Handler();
} }
DAC_ChannelConfTypeDef conf = { 0 }; DAC_ChannelConfTypeDef conf = {
conf.DAC_Trigger = DAC_TRIGGER_T6_TRGO; .DAC_Trigger = DAC_TRIGGER_T6_TRGO,
conf.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE; .DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE,
};
if (HAL_DAC_ConfigChannel(&hdac1, &conf, DAC_CHANNEL_1) != HAL_OK) { if (HAL_DAC_ConfigChannel(&hdac1, &conf, DAC_CHANNEL_1) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
@ -230,12 +242,11 @@ void dma_init(void)
Error_Handler(); Error_Handler();
} }
// Originally that was: // Originally that was:
// __HAL_LINKDMA(&hdac1, DMA_Handle1, hdma_dac1); // __HAL_LINKDMA(&hdac1, DMA_Handle1, hdma_dac1);
// Exapanded to: // Exapanded to:
// hdma_dac1.Parent = &hdac1; // hdma_dac1.Parent = &hdac1;
hdac1.DMA_Handle1 = &hdma_dac1; hdac1.DMA_Handle1 = &hdma_dac1;
} }
// -------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------
@ -254,18 +265,24 @@ void tim2_init(void)
Error_Handler(); Error_Handler();
} }
TIM_ClockConfigTypeDef sClockSourceConfig = { 0 }; {
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; TIM_ClockConfigTypeDef conf = {
if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) { .ClockSource = TIM_CLOCKSOURCE_INTERNAL,
};
if (HAL_TIM_ConfigClockSource(&htim2, &conf) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
}
TIM_MasterConfigTypeDef sMasterConfig = { 0 }; {
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; TIM_MasterConfigTypeDef conf = {
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; .MasterOutputTrigger = TIM_TRGO_RESET,
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) { .MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE,
};
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &conf) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
}
} }
void tim6_init(void) void tim6_init(void)
@ -279,12 +296,15 @@ void tim6_init(void)
Error_Handler(); Error_Handler();
} }
TIM_MasterConfigTypeDef sMasterConfig = { 0 }; {
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; TIM_MasterConfigTypeDef conf = {
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; .MasterOutputTrigger = TIM_TRGO_UPDATE,
if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) { .MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE,
};
if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &conf) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
}
} }
void tim7_init(void) void tim7_init(void)
@ -298,12 +318,15 @@ void tim7_init(void)
Error_Handler(); Error_Handler();
} }
TIM_MasterConfigTypeDef sMasterConfig = { 0 }; {
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; TIM_MasterConfigTypeDef conf = {
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; .MasterOutputTrigger = TIM_TRGO_RESET,
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK) { .MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE,
};
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &conf) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
}
} }
void irq_init() void irq_init()
@ -324,10 +347,6 @@ void irq_init()
HAL_NVIC_EnableIRQ(EXTI0_IRQn); HAL_NVIC_EnableIRQ(EXTI0_IRQn);
} }
// --------------------------------------------------------------------------------------------------
// Random Number Generator (RNG)
// --------------------------------------------------------------------------------------------------
void rng_init(void) void rng_init(void)
{ {
hrng.Instance = RNG; hrng.Instance = RNG;
@ -364,13 +383,15 @@ void rtos_default_task(void *argument)
void rtos_init(void) void rtos_init(void)
{ {
const osThreadAttr_t defaultTask_attributes = { osKernelInitialize();
const osThreadAttr_t conf = {
.name = "defaultTask", .name = "defaultTask",
.stack_size = 128 * 4, .stack_size = 128 * 4,
.priority = (osPriority_t)osPriorityNormal, .priority = (osPriority_t)osPriorityNormal,
}; };
osThreadId_t defaultTaskHandle; osThreadId_t defaultTaskHandle;
defaultTaskHandle = osThreadNew(rtos_default_task, NULL, &defaultTask_attributes); defaultTaskHandle = osThreadNew(rtos_default_task, NULL, &conf);
osKernelStart();
} }
int main(void) int main(void)
@ -388,8 +409,6 @@ int main(void)
irq_init(); irq_init();
dma_init(); dma_init();
osKernelInitialize();
rtos_init(); rtos_init();
osKernelStart();
} }

Loading…
Cancel
Save