1 /*
2 * Copyright (c) 2006-2023, RT-Thread Development Team
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Change Logs:
7 * Date Author Notes
8 * 2023-01-11 luobeihai first version
9 */
10
11 #include "board.h"
12
apm32_usart_init(void)13 void apm32_usart_init(void)
14 {
15 GPIO_Config_T GPIO_ConfigStruct;
16
17 #ifdef BSP_USING_UART1
18 RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
19 RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_USART1);
20
21 /* Connect PXx to USARTx_Tx */
22 GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_9, GPIO_AF_PIN1);
23
24 /* Connect PXx to USARRX_Rx */
25 GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_10, GPIO_AF_PIN1);
26
27 /* Configure USART Tx/Rx as alternate function push-pull */
28 GPIO_ConfigStruct.mode = GPIO_MODE_AF;
29 GPIO_ConfigStruct.pin = GPIO_PIN_9;
30 GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;
31 GPIO_ConfigStruct.outtype = GPIO_OUT_TYPE_PP;
32 GPIO_ConfigStruct.pupd = GPIO_PUPD_PU;
33 GPIO_Config(GPIOA, &GPIO_ConfigStruct);
34
35 GPIO_ConfigStruct.pin = GPIO_PIN_10;
36 GPIO_Config(GPIOA, &GPIO_ConfigStruct);
37 #endif
38
39 #ifdef BSP_USING_UART2
40 RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
41 RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_USART2);
42
43 /* Connect PXx to USARTx_Tx */
44 GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_2, GPIO_AF_PIN1);
45
46 /* Connect PXx to USARRX_Rx */
47 GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_3, GPIO_AF_PIN1);
48
49 /* Configure USART Tx/Rx as alternate function push-pull */
50 GPIO_ConfigStruct.mode = GPIO_MODE_AF;
51 GPIO_ConfigStruct.pin = GPIO_PIN_2;
52 GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;
53 GPIO_ConfigStruct.outtype = GPIO_OUT_TYPE_PP;
54 GPIO_ConfigStruct.pupd = GPIO_PUPD_PU;
55 GPIO_Config(GPIOA, &GPIO_ConfigStruct);
56
57 GPIO_ConfigStruct.pin = GPIO_PIN_3;
58 GPIO_Config(GPIOA, &GPIO_ConfigStruct);
59 #endif
60 }
61
apm32_msp_spi_init(void * Instance)62 void apm32_msp_spi_init(void *Instance)
63 {
64 #ifdef BSP_USING_SPI
65 // TODO
66 #endif
67 }
68
apm32_msp_timer_init(void * Instance)69 void apm32_msp_timer_init(void *Instance)
70 {
71 #ifdef BSP_USING_PWM
72 GPIO_Config_T gpio_config;
73 TMR_T *tmr_x = (TMR_T *)Instance;
74
75 if (tmr_x == TMR3)
76 {
77 RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_TMR3);
78
79 /* TMR3 channel 1 gpio init */
80 GPIO_ConfigPinAF(GPIOC, GPIO_PIN_SOURCE_6, GPIO_AF_PIN0);
81 gpio_config.pin = GPIO_PIN_6;
82 gpio_config.mode = GPIO_MODE_AF;
83 gpio_config.outtype = GPIO_OUT_TYPE_PP;
84 gpio_config.pupd = GPIO_PUPD_NO;
85 gpio_config.speed = GPIO_SPEED_50MHz;
86 GPIO_Config(GPIOC, &gpio_config);
87
88 /* TMR3 channel 2 gpio init */
89 GPIO_ConfigPinAF(GPIOC, GPIO_PIN_SOURCE_7, GPIO_AF_PIN0);
90 gpio_config.pin = GPIO_PIN_7;
91 GPIO_Config(GPIOC, &gpio_config);
92
93 /* TMR3 channel 3 gpio init */
94 GPIO_ConfigPinAF(GPIOC, GPIO_PIN_SOURCE_8, GPIO_AF_PIN0);
95 gpio_config.pin = GPIO_PIN_8;
96 GPIO_Config(GPIOC, &gpio_config);
97
98 /* TMR3 channel 4 gpio init */
99 GPIO_ConfigPinAF(GPIOC, GPIO_PIN_SOURCE_9, GPIO_AF_PIN0);
100 gpio_config.pin = GPIO_PIN_9;
101 GPIO_Config(GPIOC, &gpio_config);
102 }
103 #endif
104 }
105