|
|
@ -13,13 +13,53 @@ RNG_HandleTypeDef hrng; |
|
|
|
extern PCD_HandleTypeDef hpcd_USB_OTG_FS; |
|
|
|
|
|
|
|
|
|
|
|
void SystemClock_Config(void) { |
|
|
|
RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
|
|
|
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
|
|
|
void SystemClock_Config(void) |
|
|
|
{ |
|
|
|
RCC_OscInitTypeDef RCC_OscInitStruct = { 0 }; |
|
|
|
RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 }; |
|
|
|
|
|
|
|
/** Configure the main internal regulator output voltage
|
|
|
|
*/ |
|
|
|
// Enable ALL the clocks
|
|
|
|
__HAL_RCC_SYSCFG_CLK_ENABLE(); |
|
|
|
__HAL_RCC_PWR_CLK_ENABLE(); |
|
|
|
|
|
|
|
// ALL GPIO Ports
|
|
|
|
__HAL_RCC_GPIOA_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOB_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOC_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOD_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOE_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOF_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOG_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOH_CLK_ENABLE(); |
|
|
|
|
|
|
|
// ALL Timers
|
|
|
|
__HAL_RCC_TIM1_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM2_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM3_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM4_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM5_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM6_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM7_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM8_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM9_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM10_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM11_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM12_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM13_CLK_ENABLE(); |
|
|
|
__HAL_RCC_TIM14_CLK_ENABLE(); |
|
|
|
|
|
|
|
// ALL DMA Controllers
|
|
|
|
__HAL_RCC_DMA1_CLK_ENABLE(); |
|
|
|
__HAL_RCC_DMA2_CLK_ENABLE(); |
|
|
|
|
|
|
|
// The DAC
|
|
|
|
__HAL_RCC_DAC_CLK_ENABLE(); |
|
|
|
|
|
|
|
// The RNG
|
|
|
|
__HAL_RCC_RNG_CLK_ENABLE(); |
|
|
|
|
|
|
|
|
|
|
|
// Configure the main internal regulator output voltage
|
|
|
|
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); |
|
|
|
|
|
|
|
/** Initializes the RCC Oscillators according to the specified parameters
|
|
|
@ -39,8 +79,8 @@ void SystemClock_Config(void) { |
|
|
|
|
|
|
|
/** Initializes the CPU, AHB and APB buses clocks
|
|
|
|
*/ |
|
|
|
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
|
|
|
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; |
|
|
|
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | |
|
|
|
RCC_CLOCKTYPE_PCLK2; |
|
|
|
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
|
|
|
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
|
|
|
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; |
|
|
@ -55,35 +95,35 @@ void SystemClock_Config(void) { |
|
|
|
// Exception and Interrupt handler
|
|
|
|
// --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void NMI_Handler(void) { |
|
|
|
while (1) { |
|
|
|
} |
|
|
|
void NMI_Handler(void) |
|
|
|
{ |
|
|
|
while (1) {} |
|
|
|
} |
|
|
|
|
|
|
|
void HardFault_Handler(void) { |
|
|
|
while (1) { |
|
|
|
} |
|
|
|
void HardFault_Handler(void) |
|
|
|
{ |
|
|
|
while (1) {} |
|
|
|
} |
|
|
|
|
|
|
|
void MemManage_Handler(void) { |
|
|
|
while (1) { |
|
|
|
} |
|
|
|
void MemManage_Handler(void) |
|
|
|
{ |
|
|
|
while (1) {} |
|
|
|
} |
|
|
|
|
|
|
|
void BusFault_Handler(void) { |
|
|
|
while (1) { |
|
|
|
} |
|
|
|
void BusFault_Handler(void) |
|
|
|
{ |
|
|
|
while (1) {} |
|
|
|
} |
|
|
|
|
|
|
|
void UsageFault_Handler(void) { |
|
|
|
while (1) { |
|
|
|
} |
|
|
|
void UsageFault_Handler(void) |
|
|
|
{ |
|
|
|
while (1) {} |
|
|
|
} |
|
|
|
|
|
|
|
void DebugMon_Handler(void) { |
|
|
|
} |
|
|
|
void DebugMon_Handler(void) {} |
|
|
|
|
|
|
|
void SysTick_Handler(void) { |
|
|
|
void SysTick_Handler(void) |
|
|
|
{ |
|
|
|
HAL_IncTick(); |
|
|
|
#if (INCLUDE_xTaskGetSchedulerState == 1) |
|
|
|
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { |
|
|
@ -95,24 +135,28 @@ void SysTick_Handler(void) { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void EXTI0_IRQHandler(void) { |
|
|
|
HAL_GPIO_EXTI_IRQHandler(BUT_BLUE_Pin); |
|
|
|
void EXTI0_IRQHandler(void) |
|
|
|
{ |
|
|
|
HAL_GPIO_EXTI_IRQHandler(BUT_BLUE_GPIO_PIN); |
|
|
|
} |
|
|
|
|
|
|
|
void DMA1_Stream5_IRQHandler(void) { |
|
|
|
void DMA1_Stream5_IRQHandler(void) |
|
|
|
{ |
|
|
|
HAL_DMA_IRQHandler(&hdma_dac1); |
|
|
|
} |
|
|
|
|
|
|
|
void TIM2_IRQHandler(void) { |
|
|
|
void TIM2_IRQHandler(void) |
|
|
|
{ |
|
|
|
HAL_TIM_IRQHandler(&htim2); |
|
|
|
} |
|
|
|
|
|
|
|
void TIM7_IRQHandler(void) { |
|
|
|
void TIM7_IRQHandler(void) |
|
|
|
{ |
|
|
|
HAL_TIM_IRQHandler(&htim7); |
|
|
|
} |
|
|
|
|
|
|
|
void OTG_FS_IRQHandler(void) { |
|
|
|
void OTG_FS_IRQHandler(void) |
|
|
|
{ |
|
|
|
HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); |
|
|
|
} |
|
|
|
|
|
|
@ -121,30 +165,30 @@ void OTG_FS_IRQHandler(void) { |
|
|
|
// Peripheral init
|
|
|
|
// --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void MX_GPIO_Init(void) { |
|
|
|
GPIO_InitTypeDef GPIO_InitStruct = {0}; |
|
|
|
void MX_GPIO_Init(void) |
|
|
|
{ |
|
|
|
HAL_GPIO_WritePin(LED_GREEN_GPIO_PORT, LED_GREEN_GPIO_PIN, GPIO_PIN_RESET); |
|
|
|
|
|
|
|
/* GPIO Ports Clock Enable */ |
|
|
|
__HAL_RCC_GPIOC_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOH_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOA_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOD_CLK_ENABLE(); |
|
|
|
{ |
|
|
|
GPIO_InitTypeDef GPIO_InitStruct; |
|
|
|
memset(&GPIO_InitStruct, 0, sizeof GPIO_InitStruct); |
|
|
|
|
|
|
|
/*Configure GPIO pin Output Level */ |
|
|
|
HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_RESET); |
|
|
|
GPIO_InitStruct.Pin = BUT_BLUE_GPIO_PIN; |
|
|
|
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; |
|
|
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
|
|
HAL_GPIO_Init(BUT_BLUE_GPIO_PORT, &GPIO_InitStruct); |
|
|
|
} |
|
|
|
|
|
|
|
/*Configure GPIO pin : PtPin */ |
|
|
|
GPIO_InitStruct.Pin = BUT_BLUE_Pin; |
|
|
|
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; |
|
|
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
|
|
HAL_GPIO_Init(BUT_BLUE_GPIO_Port, &GPIO_InitStruct); |
|
|
|
{ |
|
|
|
GPIO_InitTypeDef GPIO_InitStruct; |
|
|
|
memset(&GPIO_InitStruct, 0, sizeof GPIO_InitStruct); |
|
|
|
|
|
|
|
/*Configure GPIO pin : PtPin */ |
|
|
|
GPIO_InitStruct.Pin = LED_GREEN_Pin; |
|
|
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
|
|
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
|
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
|
|
HAL_GPIO_Init(LED_GREEN_GPIO_Port, &GPIO_InitStruct); |
|
|
|
GPIO_InitStruct.Pin = LED_GREEN_GPIO_PIN; |
|
|
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
|
|
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
|
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
|
|
HAL_GPIO_Init(LED_GREEN_GPIO_PORT, &GPIO_InitStruct); |
|
|
|
} |
|
|
|
|
|
|
|
/* EXTI interrupt init*/ |
|
|
|
HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0); |
|
|
@ -156,8 +200,9 @@ void MX_GPIO_Init(void) { |
|
|
|
// Peripheral init
|
|
|
|
// --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void MX_DAC_Init(void) { |
|
|
|
DAC_ChannelConfTypeDef sConfig = {0}; |
|
|
|
void MX_DAC_Init(void) |
|
|
|
{ |
|
|
|
DAC_ChannelConfTypeDef sConfig = { 0 }; |
|
|
|
hdac_global.Instance = DAC; |
|
|
|
if (HAL_DAC_Init(&hdac_global) != HAL_OK) { |
|
|
|
Error_Handler(); |
|
|
@ -177,13 +222,11 @@ void MX_DAC_Init(void) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_DAC_MspInit(DAC_HandleTypeDef *dacHandle) { |
|
|
|
GPIO_InitTypeDef GPIO_InitStruct = {0}; |
|
|
|
void HAL_DAC_MspInit(DAC_HandleTypeDef *dacHandle) |
|
|
|
{ |
|
|
|
GPIO_InitTypeDef GPIO_InitStruct = { 0 }; |
|
|
|
if (dacHandle->Instance == DAC) { |
|
|
|
/* DAC clock enable */ |
|
|
|
__HAL_RCC_DAC_CLK_ENABLE(); |
|
|
|
|
|
|
|
__HAL_RCC_GPIOA_CLK_ENABLE(); |
|
|
|
/**DAC GPIO Configuration
|
|
|
|
PA4 ------> DAC_OUT1 |
|
|
|
PA5 ------> DAC_OUT2 |
|
|
@ -213,14 +256,10 @@ void HAL_DAC_MspInit(DAC_HandleTypeDef *dacHandle) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_DAC_MspDeInit(DAC_HandleTypeDef *dacHandle) { |
|
|
|
void HAL_DAC_MspDeInit(DAC_HandleTypeDef *dacHandle) |
|
|
|
{ |
|
|
|
if (dacHandle->Instance == DAC) { |
|
|
|
__HAL_RCC_DAC_CLK_DISABLE(); |
|
|
|
|
|
|
|
// DAC GPIO Configuration
|
|
|
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4 | GPIO_PIN_5); |
|
|
|
|
|
|
|
/* DAC DMA DeInit */ |
|
|
|
HAL_DMA_DeInit(dacHandle->DMA_Handle1); |
|
|
|
} |
|
|
|
} |
|
|
@ -230,8 +269,9 @@ void HAL_DAC_MspDeInit(DAC_HandleTypeDef *dacHandle) { |
|
|
|
// Peripheral init
|
|
|
|
// --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void MX_DMA_Init(void) { |
|
|
|
__HAL_RCC_DMA1_CLK_ENABLE(); |
|
|
|
void MX_DMA_Init(void) |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
/* DMA interrupt init */ |
|
|
|
/* DMA1_Stream5_IRQn interrupt configuration */ |
|
|
@ -244,9 +284,10 @@ void MX_DMA_Init(void) { |
|
|
|
// Timers
|
|
|
|
// --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void MX_TIM2_Init(void) { |
|
|
|
TIM_ClockConfigTypeDef sClockSourceConfig = {0}; |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = {0}; |
|
|
|
void MX_TIM2_Init(void) |
|
|
|
{ |
|
|
|
TIM_ClockConfigTypeDef sClockSourceConfig = { 0 }; |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = { 0 }; |
|
|
|
|
|
|
|
htim2.Instance = TIM2; |
|
|
|
htim2.Init.Prescaler = 0; |
|
|
@ -268,8 +309,9 @@ void MX_TIM2_Init(void) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void MX_TIM6_Init(void) { |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = {0}; |
|
|
|
void MX_TIM6_Init(void) |
|
|
|
{ |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = { 0 }; |
|
|
|
|
|
|
|
htim6.Instance = TIM6; |
|
|
|
htim6.Init.Prescaler = 0; |
|
|
@ -286,8 +328,9 @@ void MX_TIM6_Init(void) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void MX_TIM7_Init(void) { |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = {0}; |
|
|
|
void MX_TIM7_Init(void) |
|
|
|
{ |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = { 0 }; |
|
|
|
|
|
|
|
htim7.Instance = TIM7; |
|
|
|
htim7.Init.Prescaler = 10000; |
|
|
@ -304,17 +347,14 @@ void MX_TIM7_Init(void) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *tim_baseHandle) { |
|
|
|
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *tim_baseHandle) |
|
|
|
{ |
|
|
|
if (tim_baseHandle->Instance == TIM2) { |
|
|
|
__HAL_RCC_TIM2_CLK_ENABLE(); |
|
|
|
|
|
|
|
/* TIM2 interrupt Init */ |
|
|
|
HAL_NVIC_SetPriority(TIM2_IRQn, 5, 0); |
|
|
|
HAL_NVIC_EnableIRQ(TIM2_IRQn); |
|
|
|
} else if (tim_baseHandle->Instance == TIM6) { |
|
|
|
__HAL_RCC_TIM6_CLK_ENABLE(); |
|
|
|
} else if (tim_baseHandle->Instance == TIM7) { |
|
|
|
__HAL_RCC_TIM7_CLK_ENABLE(); |
|
|
|
|
|
|
|
/* TIM7 interrupt Init */ |
|
|
|
HAL_NVIC_SetPriority(TIM7_IRQn, 5, 0); |
|
|
@ -322,15 +362,12 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *tim_baseHandle) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *tim_baseHandle) { |
|
|
|
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *tim_baseHandle) |
|
|
|
{ |
|
|
|
if (tim_baseHandle->Instance == TIM2) { |
|
|
|
__HAL_RCC_TIM2_CLK_DISABLE(); |
|
|
|
|
|
|
|
HAL_NVIC_DisableIRQ(TIM2_IRQn); |
|
|
|
} else if (tim_baseHandle->Instance == TIM6) { |
|
|
|
__HAL_RCC_TIM6_CLK_DISABLE(); |
|
|
|
} else if (tim_baseHandle->Instance == TIM7) { |
|
|
|
__HAL_RCC_TIM7_CLK_DISABLE(); |
|
|
|
HAL_NVIC_DisableIRQ(TIM7_IRQn); |
|
|
|
} |
|
|
|
} |
|
|
@ -340,34 +377,22 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *tim_baseHandle) { |
|
|
|
// Random Number Generator (RNG)
|
|
|
|
// --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void MX_RNG_Init(void) { |
|
|
|
void MX_RNG_Init(void) |
|
|
|
{ |
|
|
|
hrng.Instance = RNG; |
|
|
|
if (HAL_RNG_Init(&hrng) != HAL_OK) { |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_RNG_MspInit(RNG_HandleTypeDef *rngHandle) { |
|
|
|
if (rngHandle->Instance == RNG) { |
|
|
|
__HAL_RCC_RNG_CLK_ENABLE(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_RNG_MspDeInit(RNG_HandleTypeDef *rngHandle) { |
|
|
|
if (rngHandle->Instance == RNG) { |
|
|
|
__HAL_RCC_RNG_CLK_DISABLE(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Error_Handler(void) { |
|
|
|
void Error_Handler(void) |
|
|
|
{ |
|
|
|
heck_error_handler(); |
|
|
|
__disable_irq(); |
|
|
|
while (1) { |
|
|
|
} |
|
|
|
while (1) {} |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef USE_FULL_ASSERT |
|
|
|
#ifdef USE_FULL_ASSERT |
|
|
|
/**
|
|
|
|
* @brief Reports the name of the source file and the source line number |
|
|
|
* where the assert_param error has occurred. |
|
|
@ -377,29 +402,32 @@ void Error_Handler(void) { |
|
|
|
*/ |
|
|
|
void assert_failed(uint8_t *file, uint32_t line) |
|
|
|
{ |
|
|
|
/* User can add his own implementation to report the file name and line number,
|
|
|
|
/* User can add his own implementation to report the file name and line number,
|
|
|
|
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ |
|
|
|
} |
|
|
|
#endif /* USE_FULL_ASSERT */ |
|
|
|
|
|
|
|
osThreadId_t defaultTaskHandle; |
|
|
|
const osThreadAttr_t defaultTask_attributes = { |
|
|
|
.name = "defaultTask", |
|
|
|
.stack_size = 128 * 4, |
|
|
|
.priority = (osPriority_t) osPriorityNormal, |
|
|
|
.name = "defaultTask", |
|
|
|
.stack_size = 128 * 4, |
|
|
|
.priority = (osPriority_t)osPriorityNormal, |
|
|
|
}; |
|
|
|
|
|
|
|
void StartDefaultTask(void *argument) { |
|
|
|
void StartDefaultTask(void *argument) |
|
|
|
{ |
|
|
|
MX_USB_DEVICE_Init(); |
|
|
|
heck_cppmain(); |
|
|
|
} |
|
|
|
|
|
|
|
void MX_FREERTOS_Init(void) { |
|
|
|
void MX_FREERTOS_Init(void) |
|
|
|
{ |
|
|
|
defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int main(void) { |
|
|
|
int main(void) |
|
|
|
{ |
|
|
|
HAL_Init(); |
|
|
|
SystemClock_Config(); |
|
|
|
|
|
|
@ -416,9 +444,8 @@ int main(void) { |
|
|
|
osKernelStart(); |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_MspInit(void) { |
|
|
|
__HAL_RCC_SYSCFG_CLK_ENABLE(); |
|
|
|
__HAL_RCC_PWR_CLK_ENABLE(); |
|
|
|
void HAL_MspInit(void) |
|
|
|
{ |
|
|
|
|
|
|
|
HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0); |
|
|
|
} |
|
|
|