1 /* 2 * Copyright (c) 2022 Talkweb Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include <stdio.h> 17 #include <string.h> 18 #include "stm32f4xx_hal.h" 19 20 #define BAUDRATE 115200 21 #define NIOBE_PLLM 4 22 #define NIOBE_PLLN 168 23 #define NIOBE_PLLQ 7 24 #define NIOBE_DELAY 1000 25 26 UART_HandleTypeDef huart1; 27 28 void SystemClock_Config(void); 29 static void MX_USART1_UART_Init(void); 30 extern void OHOS_Boot(void); 31 HAL_MspInit(void)32void HAL_MspInit(void) 33 { 34 __HAL_RCC_SYSCFG_CLK_ENABLE(); 35 __HAL_RCC_PWR_CLK_ENABLE(); 36 } 37 HAL_UART_MspInit(UART_HandleTypeDef * huart)38void HAL_UART_MspInit(UART_HandleTypeDef *huart) 39 { 40 GPIO_InitTypeDef GPIO_InitStruct = {0}; 41 if (huart->Instance == USART1) { 42 __HAL_RCC_USART1_CLK_ENABLE(); 43 __HAL_RCC_GPIOB_CLK_ENABLE(); 44 45 GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7; 46 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 47 GPIO_InitStruct.Pull = GPIO_NOPULL; 48 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 49 GPIO_InitStruct.Alternate = GPIO_AF7_USART1; 50 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 51 } 52 } 53 HAL_UART_MspDeInit(UART_HandleTypeDef * huart)54void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) 55 { 56 if (huart->Instance == USART1) { 57 __HAL_RCC_USART1_CLK_DISABLE(); 58 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6 | GPIO_PIN_7); 59 } 60 } 61 main(void)62int main(void) 63 { 64 HAL_Init(); 65 SystemClock_Config(); 66 MX_USART1_UART_Init(); 67 OHOS_Boot(); 68 69 while (1) { 70 printf("Error\r\n"); 71 HAL_Delay(NIOBE_DELAY); 72 } 73 } 74 SystemClock_Config(void)75void SystemClock_Config(void) 76 { 77 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; 78 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; 79 80 __HAL_RCC_PWR_CLK_ENABLE(); 81 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); 82 83 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; 84 RCC_OscInitStruct.HSEState = RCC_HSE_ON; 85 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; 86 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; 87 RCC_OscInitStruct.PLL.PLLM = NIOBE_PLLM; 88 RCC_OscInitStruct.PLL.PLLN = NIOBE_PLLN; 89 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; 90 RCC_OscInitStruct.PLL.PLLQ = NIOBE_PLLQ; 91 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { 92 Error_Handler(); 93 } 94 95 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; 96 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; 97 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 98 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; 99 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; 100 101 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { 102 Error_Handler(); 103 } 104 } 105 MX_USART1_UART_Init(void)106static void MX_USART1_UART_Init(void) 107 { 108 huart1.Instance = USART1; 109 huart1.Init.BaudRate = BAUDRATE; 110 huart1.Init.WordLength = UART_WORDLENGTH_8B; 111 huart1.Init.StopBits = UART_STOPBITS_1; 112 huart1.Init.Parity = UART_PARITY_NONE; 113 huart1.Init.Mode = UART_MODE_TX_RX; 114 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; 115 huart1.Init.OverSampling = UART_OVERSAMPLING_16; 116 if (HAL_UART_Init(&huart1) != HAL_OK) { 117 Error_Handler(); 118 } 119 } 120 Error_Handler(void)121void Error_Handler(void) 122 { 123 __disable_irq(); 124 while (1) { 125 } 126 }