• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)32 void HAL_MspInit(void)
33 {
34     __HAL_RCC_SYSCFG_CLK_ENABLE();
35     __HAL_RCC_PWR_CLK_ENABLE();
36 }
37 
HAL_UART_MspInit(UART_HandleTypeDef * huart)38 void 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)54 void 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)62 int 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)75 void 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)106 static 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)121 void Error_Handler(void)
122 {
123     __disable_irq();
124     while (1) {
125     }
126 }