Skip to content

Commit d196bf7

Browse files
committed
修改了spi驱动,在n32l40xcl-stb和n32g457qel-stb 的 bsp编译通过也在公司自制的板卡测试过
1 parent 9a6d515 commit d196bf7

File tree

13 files changed

+847
-382
lines changed

13 files changed

+847
-382
lines changed

bsp n32 - 快捷方式.lnk

1.19 KB
Binary file not shown.

bsp/n32/libraries/n32_drivers/SConscript

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ cwd = GetCurrentDir()
77
# add the general drivers.
88
src = Split("""
99
""")
10+
#common driver file gpio,rcc init
11+
src += ['drv_base.c']
1012

1113
if GetDepend(['RT_USING_PIN']):
1214
src += ['drv_gpio.c']
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
#include <rtthread.h>
2+
3+
4+
#define DBG_TAG "PWM"
5+
#define DBG_LEVEL DBG_LOG
6+
#include <rtdbg.h>
7+
#include "board.h"
8+
/**
9+
* @brief 使能对应GPIO的时钟
10+
*/
11+
void n32_gpio_rcc_enable(GPIO_Module *gpio_grp)
12+
{
13+
assert_param(IS_GPIO_ALL_PERIPH(gpio_grp));
14+
if (GPIOA == gpio_grp)
15+
{
16+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
17+
LOG_D("enable gpio rcc GPIOA");
18+
}
19+
else if (GPIOB == gpio_grp)
20+
{
21+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE);
22+
LOG_D("enable gpio rcc GPIOB");
23+
}
24+
else if (GPIOC == gpio_grp)
25+
{
26+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOC, ENABLE);
27+
LOG_D("enable gpio rcc GPIOC");
28+
}
29+
else if (GPIOD == gpio_grp)
30+
{
31+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOD, ENABLE);
32+
LOG_D("enable gpio rcc GPIOD");
33+
}
34+
#if defined(SOC_N32G45X) || defined(SOC_N32WB452) || defined(SOC_N32G4FR)
35+
else if (GPIOE == gpio_grp)
36+
{
37+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOE, ENABLE);
38+
}
39+
else if (GPIOF == gpio_grp)
40+
{
41+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOF, ENABLE);
42+
}
43+
else if (GPIOG == gpio_grp)
44+
{
45+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOG, ENABLE);
46+
}
47+
#endif
48+
}
49+
/**定时器2的引脚涉及了SWD-JTAG的调试引脚,在复用时需要先设置jSWD-JTAG的复用
50+
* 复用功能 GPIO端口
51+
JTMS/SWDIO PA13-----------swd
52+
JTCK/SWCLK A14------------swd
53+
JTDI PA15
54+
JTDO PB3
55+
NJTRST PB4
56+
57+
* GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE,ENABLE);
58+
*/
59+
void gpio_remap_JTAGOFF_SWDON(GPIO_Module *gpio_grp, uint16_t pin)
60+
{
61+
#if defined(SOC_N32G45X) || defined(SOC_N32WB452) || defined(SOC_N32G4FR)
62+
63+
if ((GPIOA == gpio_grp && GPIO_PIN_15) ||
64+
(GPIOB == gpio_grp && GPIO_PIN_3) ||
65+
(GPIOB == gpio_grp && GPIO_PIN_4))
66+
{
67+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO, ENABLE);
68+
GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE, ENABLE);
69+
}
70+
#endif
71+
}
72+
73+
/**
74+
* @brief 定时器的时钟使能配置
75+
*/
76+
void n32_time_rcc_config(TIM_Module *htim)
77+
{
78+
RT_ASSERT(TIM1 == htim || TIM2 == htim || TIM3 == htim || TIM4 == htim || TIM5 == htim || TIM8 == htim
79+
#if defined(SOC_N32G45X) || defined(SOC_N32WB452) || defined(SOC_N32G4FR)
80+
);
81+
#else
82+
|| TIM9 == htim);
83+
#endif
84+
85+
if (TIM1 == htim)
86+
{
87+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_TIM1, ENABLE);
88+
}
89+
else if (TIM2 == htim)
90+
{
91+
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM2, ENABLE);
92+
}
93+
else if (TIM3 == htim)
94+
{
95+
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM3, ENABLE);
96+
}
97+
else if (TIM4 == htim)
98+
{
99+
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM4, ENABLE);
100+
}
101+
else if (TIM5 == htim)
102+
{
103+
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM5, ENABLE);
104+
}
105+
else if (TIM8 == htim)
106+
{
107+
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_TIM8, ENABLE);
108+
}
109+
#if defined(SOC_N32L43X) || defined(SOC_N32L40X) || defined(SOC_N32G43X)
110+
else if (TIM9 == htim)
111+
{
112+
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM9, ENABLE);
113+
}
114+
#endif
115+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef __DRV_BASE__
2+
#define __DRV_BASE__
3+
#include "board.h"
4+
/**
5+
* @brief 使能对应GPIO的时钟
6+
*/
7+
void n32_gpio_rcc_enable(GPIO_Module *gpio_grp);
8+
9+
/**
10+
* @brief 定时器的时钟使能配置
11+
*/
12+
void n32_time_rcc_config(TIM_Module *htim);
13+
14+
/**定时器2的引脚涉及了SWD-JTAG的调试引脚,在复用时需要先设置jSWD-JTAG的复用
15+
* 复用功能 GPIO端口
16+
JTMS/SWDIO PA13-----------swd
17+
JTCK/SWCLK A14------------swd
18+
JTDI PA15
19+
JTDO PB3
20+
NJTRST PB4
21+
22+
* GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE,ENABLE);
23+
*/
24+
void gpio_remap_JTAGOFF_SWDON(GPIO_Module *gpio_grp, uint16_t pin);
25+
#endif

0 commit comments

Comments
 (0)