Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
嗨,你的益达!
rt-thread
提交
10551b54
R
rt-thread
项目概览
嗨,你的益达!
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
10551b54
编写于
6月 08, 2023
作者:
S
shiwa
提交者:
GitHub
6月 08, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bsp][essemi]es32vf2264更新部分库函数和驱动,添加RTduino支持 (#7619)
上级
1d816585
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
624 addition
and
173 deletion
+624
-173
bsp/essemi/es32f0654/Kconfig
bsp/essemi/es32f0654/Kconfig
+1
-0
bsp/essemi/es32f365x/Kconfig
bsp/essemi/es32f365x/Kconfig
+1
-0
bsp/essemi/es32f369x/Kconfig
bsp/essemi/es32f369x/Kconfig
+1
-0
bsp/essemi/es32vf2264/Kconfig
bsp/essemi/es32vf2264/Kconfig
+1
-0
bsp/essemi/es32vf2264/applications/SConscript
bsp/essemi/es32vf2264/applications/SConscript
+12
-4
bsp/essemi/es32vf2264/applications/arduino_main.cpp
bsp/essemi/es32vf2264/applications/arduino_main.cpp
+24
-0
bsp/essemi/es32vf2264/applications/arduino_pinout/README.md
bsp/essemi/es32vf2264/applications/arduino_pinout/README.md
+142
-0
bsp/essemi/es32vf2264/applications/arduino_pinout/SConscript
bsp/essemi/es32vf2264/applications/arduino_pinout/SConscript
+9
-0
bsp/essemi/es32vf2264/applications/arduino_pinout/arduino_pins.xlsx
.../es32vf2264/applications/arduino_pinout/arduino_pins.xlsx
+0
-0
bsp/essemi/es32vf2264/applications/arduino_pinout/examples/arduino_examples.cpp
...applications/arduino_pinout/examples/arduino_examples.cpp
+187
-0
bsp/essemi/es32vf2264/applications/arduino_pinout/picture/image-20230602165933931.png
...ations/arduino_pinout/picture/image-20230602165933931.png
+0
-0
bsp/essemi/es32vf2264/applications/arduino_pinout/pins_arduino.c
...emi/es32vf2264/applications/arduino_pinout/pins_arduino.c
+61
-0
bsp/essemi/es32vf2264/applications/arduino_pinout/pins_arduino.h
...emi/es32vf2264/applications/arduino_pinout/pins_arduino.h
+60
-0
bsp/essemi/es32vf2264/drivers/ES/es_conf_info_map.h
bsp/essemi/es32vf2264/drivers/ES/es_conf_info_map.h
+40
-40
bsp/essemi/es32vf2264/drivers/ES/es_conf_info_pwm.h
bsp/essemi/es32vf2264/drivers/ES/es_conf_info_pwm.h
+4
-4
bsp/essemi/es32vf2264/drivers/Kconfig
bsp/essemi/es32vf2264/drivers/Kconfig
+17
-0
bsp/essemi/es32vf2264/drivers/SConscript
bsp/essemi/es32vf2264/drivers/SConscript
+5
-2
bsp/essemi/es32vf2264/drivers/drv_pwm.c
bsp/essemi/es32vf2264/drivers/drv_pwm.c
+36
-106
bsp/essemi/es32vf2264/drivers/drv_spi.c
bsp/essemi/es32vf2264/drivers/drv_spi.c
+5
-5
bsp/essemi/es32vf2264/drivers/es32vf2264.ld
bsp/essemi/es32vf2264/drivers/es32vf2264.ld
+11
-8
bsp/essemi/es32vf2264/libraries/ALD/ES32VF2264/Include/ald_adc.h
...emi/es32vf2264/libraries/ALD/ES32VF2264/Include/ald_adc.h
+1
-1
bsp/essemi/es32vf2264/libraries/RV_CORE/Device/EastSoft/ES32VF2264/Include/es32vf2264.h
...s/RV_CORE/Device/EastSoft/ES32VF2264/Include/es32vf2264.h
+4
-1
bsp/essemi/es32vf2264/template.cdkproj
bsp/essemi/es32vf2264/template.cdkproj
+2
-2
未找到文件。
bsp/essemi/es32f0654/Kconfig
浏览文件 @
10551b54
...
@@ -22,6 +22,7 @@ config SOC_ES32F0654LT
...
@@ -22,6 +22,7 @@ config SOC_ES32F0654LT
bool
bool
select RT_USING_COMPONENTS_INIT
select RT_USING_COMPONENTS_INIT
select RT_USING_USER_MAIN
select RT_USING_USER_MAIN
select ARCH_ARM_CORTEX_M0
default y
default y
source "drivers/Kconfig"
source "drivers/Kconfig"
bsp/essemi/es32f365x/Kconfig
浏览文件 @
10551b54
...
@@ -22,6 +22,7 @@ config SOC_ES32F3696LT
...
@@ -22,6 +22,7 @@ config SOC_ES32F3696LT
bool
bool
select RT_USING_COMPONENTS_INIT
select RT_USING_COMPONENTS_INIT
select RT_USING_USER_MAIN
select RT_USING_USER_MAIN
select ARCH_ARM_CORTEX_M3
default y
default y
source "drivers/Kconfig"
source "drivers/Kconfig"
bsp/essemi/es32f369x/Kconfig
浏览文件 @
10551b54
...
@@ -22,6 +22,7 @@ config SOC_ES32F3696LT
...
@@ -22,6 +22,7 @@ config SOC_ES32F3696LT
bool
bool
select RT_USING_COMPONENTS_INIT
select RT_USING_COMPONENTS_INIT
select RT_USING_USER_MAIN
select RT_USING_USER_MAIN
select ARCH_ARM_CORTEX_M3
default y
default y
source "drivers/Kconfig"
source "drivers/Kconfig"
bsp/essemi/es32vf2264/Kconfig
浏览文件 @
10551b54
...
@@ -22,6 +22,7 @@ config SOC_ES32VF2264
...
@@ -22,6 +22,7 @@ config SOC_ES32VF2264
bool
bool
select RT_USING_COMPONENTS_INIT
select RT_USING_COMPONENTS_INIT
select RT_USING_USER_MAIN
select RT_USING_USER_MAIN
select ARCH_RISCV32
default y
default y
source "drivers/Kconfig"
source "drivers/Kconfig"
bsp/essemi/es32vf2264/applications/SConscript
浏览文件 @
10551b54
...
@@ -2,10 +2,18 @@ Import('RTT_ROOT')
...
@@ -2,10 +2,18 @@ Import('RTT_ROOT')
Import
(
'rtconfig'
)
Import
(
'rtconfig'
)
from
building
import
*
from
building
import
*
cwd
=
os
.
path
.
join
(
str
(
Dir
(
'#'
)),
'applications'
)
src
=
Glob
(
'*.c'
)
src
=
Glob
(
'*.c'
)
CPPPATH
=
[
cwd
,
str
(
Dir
(
'#'
))]
if
GetDepend
([
'PKG_USING_RTDUINO'
])
and
not
GetDepend
([
'RTDUINO_NO_SETUP_LOOP'
]):
group
=
DefineGroup
(
'Applications'
,
src
,
depend
=
[
''
],
CPPPATH
=
CPPPATH
)
src
+=
[
'arduino_main.cpp'
]
cwd
=
GetCurrentDir
()
CPPPATH
=
[
cwd
]
group
=
DefineGroup
(
'applications'
,
src
,
depend
=
[
''
],
CPPPATH
=
CPPPATH
)
list
=
os
.
listdir
(
cwd
)
for
item
in
list
:
if
os
.
path
.
isfile
(
os
.
path
.
join
(
cwd
,
item
,
'SConscript'
)):
group
=
group
+
SConscript
(
os
.
path
.
join
(
item
,
'SConscript'
))
Return
(
'group'
)
Return
(
'group'
)
bsp/essemi/es32vf2264/applications/arduino_main.cpp
0 → 100644
浏览文件 @
10551b54
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-12-10 Meco Man first version
* 2023-05-30 shiwa ES32VF2264
*/
#include <Arduino.h>
void
setup
(
void
)
{
pinMode
(
LED_BUILTIN
,
OUTPUT
);
}
void
loop
(
void
)
{
/* put your main code here, to run repeatedly: */
digitalWrite
(
LED_BUILTIN
,
!
digitalRead
(
LED_BUILTIN
));
delay
(
250
);
}
bsp/essemi/es32vf2264/applications/arduino_pinout/README.md
0 → 100644
浏览文件 @
10551b54
# ES32VF2264的Arduino生态兼容说明
## 1 RTduino - RT-Thread的Arduino生态兼容层
ES32VF2264已经适配了
[
RTduino软件包
](
https://github.com/RTduino/RTduino
)
,可正常使用全部功能,包含GPIO、PWM、I2C、SPI、UART功能。除标准arduino uno的接口外,该开发板还额外添加了4个led和一组方向键对应的GPIO,由于设计原因,该开发板仅有A0-A1两个ADC可用,原本对应A2-A5的ADC被换为了数字接口(可用作SPI1)。更多信息,请参见
[
RTduino软件包说明文档
](
https://github.com/RTduino/RTduino
)
### 1.1 使用CDK+Env
1.
Env 工具下敲入 menuconfig 命令,或者 RT-Thread Studio IDE 下选择 RT-Thread Settings:
```
Kconfig
Hardware Drivers Config --->
Onboard Peripheral Drivers --->
[*] Compatible with Arduino Ecosystem (RTduino)
```
2.
进入RTduino配置,打开需要使用的各项配置 (SPI,I2C,Adafrui等)
```
Kconfig
RT-Thread online packages --->
system packages --->
RTduino: Arduino Ecological Compatibility Layer
```
3.
使用 pkgs --update下载RTduino包及其他软件包
4.
使用scons --target=cdk生成代码
## 2 Arduino引脚排布
该BSP遵照Arduino UNO板的引脚排列方式,并额外扩展了一些LED和按键,更多引脚布局相关信息参见
[
pins_arduino.c
](
pins_arduino.c
)
和
[
pins_arduino.h
](
pins_arduino.h
)
。
arduino引脚排布参见下图(或arduino_pins.xlsx)。
注意,由于设计原因,左边部分原本对应Arduino的A2-A5这4个ADC接口不可用,可以作为普通数字IO或SPI1使用。
![
image-20230602165933931
](
picture/image-20230602165933931.png
)
各引脚功能参见下表
| Arduino引脚编号 | ES32引脚编号 | 备注 |
| --------------- | ------------ | ---------------- |
| D0 | PC11 | CUART2 RX |
| D1 | PC10 | CUART2 TX |
| D2 | PB5 | 普通IO |
| D3 | PC15 | PWM3 通道4 |
| D4 | PB4 | 普通IO |
| D5 | PC7 | PWM2 通道2 |
| D6 | PC6 | PWM0 通道1 |
| D7 | PA8 | 普通IO |
| D8 | PB11 | 普通IO |
| D9 | PB10 | 普通IO |
| D10 | PA4 | SPI片选/普通IO |
| D11 | PA7 | SPI0_MOSI/普通IO |
| D12 | PA6 | SPI0_MISO/普通IO |
| D13 | PA5 | SPI0_SCK/普通IO |
| D14 | PB3 | I2C0_SDA |
| D15 | PB2 | I2C0_SCL |
| D16 | PA15 | LED4 |
| D17 | PC12 | LED5 |
| D18 | PC13 | LED6 |
| D19 | PC14 | LED7 |
| D20 | PB7 | KEY_UP |
| D21 | PB9 | KEY_DOWN |
| D22 | PB6 | KEY_LEFT |
| D23 | PB8 | KEY_RIGHT |
| D24 | PD2 | KEY_CENTER |
| D25 | PB15 | SPI1_MOSI/普通IO |
| D26 | PB14 | SPI1_MISO/普通IO |
| D27 | PB13 | SPI1_SCK/普通IO |
| D28 | PB12 | SPI片选/普通IO |
| A0 | PC1 | ADC |
| A1 | PC2 | ADC |
## 3 I2C总线
ES32-Arduino支持的I2C总线是:i2c0。
I2C的引脚都是被RT-Thread I2C设备框架接管的,不需要直接操控这两个引脚。
在RTduino中选择启用
<Wire.h>
即可使用。
或者在RTduino中开启Adafruit_Bus后,可使用
`Adafruit_I2CDevice.h`
控制
## 4 SPI总线
ES32-Arduino的SPI总线是spi0、spi1,
`SCK`
、
`MISO`
、
`MOSI`
引脚是被RT-Thread SPI设备框架接管的,不需要直接操控这3个引脚。
在RTduino中选择启用
<SPI.h>
即可使用,用户需要自行控制片选。
或者在RTduino中开启Adafruit_Bus后,使用
`Adafruit_SPIDevice.h`
控制。
## 5 测试说明
在applications/arduino_pinout/examples/arduino_examples.cpp文件中,已经根据功能预设了一系列函数用于测试arduino各个功能,可根据测试需要,取消注释对应的宏定义即可启用对应的测试。如果需要测试,请将arduino_examples.cpp文件的内容覆盖到applications/arduino_main.cpp文件中
1.
RTduino各功能测试
目前支持的测试如下:
| 宏定义 | 名称 | 描述 |
| ---------------------- | --------------- | ------------------------------------------------------------ |
| ARDU_TEST_GPIO | 数字GPIO测试 | 测试数字管脚的输出功能,包括两个管脚输出高/低电平,一个管脚输出一个0.5s周期的方波 |
| ARDU_TEST_PWM | 模拟PWM输出测试 | PWM功能输出测试,分别在三个PWM管脚输出不同的三种占空比的方波 |
| ARDU_TEST_UART | UART测试 | 在cuart2串口不断打印"Hello" |
| ARDU_TEST_ADAFRUIT_I2C | AdafruitI2C测试 | 使用AdafruitI2C库发送数据,测试正常可以收到不断发送的"HelloRTduinoHello" |
| ARDU_TEST_ADAFRUIT_SPI | AdafruitSPI测试 | 使用AdafruitSPI库发送数据,测试正常可收到不断的"TEST" |
| ARDU_TEST_I2C | I2C测试 | 通过I2C接口发送数据,测试正常可收到不断的"Hello" |
| ARDU_TEST_SPI | SPI测试 | 通过SPI接口发送和接收数据,测试正常可收到不断的"ABCD" |
| ARDU_TEST_INT | 中断测试 | 测试外部中断,按下方向键的中键会打印相关信息 |
| ARDU_TEST_DIGITAL_READ | 数字读测试 | 不断读取各个方向键的状态,并在按下时输出信息 |
| ARDU_TEST_ADC_READ | ADC测试 | 循环读取各个ADC的数据,并通过串口打印 |
## 6 其他说明
### 1.ADC
目前ES32的ADC返回的是原始值(范围0-4095),需要计算转换为实际的电压值,暂时不支持分辨率调节。
### 2.对非数字IO的管脚不要调用pinMode
非数字IO的管脚在其他地方已经初始化了,再次调用pinMode会使他变为普通管脚且无法再重新初始化为非数字IO的功能。即对于任意管脚可以调用pinMode使它变为数字IO管脚,但这一过程不可逆,原有的预设功能将会失效
### 3.SPI/I2C/UART使用
默认开启了spi0、spi1、i2c0、cuart1(默认控制台串口)、cuart2,如果需要使用其他的spi/i2c/uart可以在配置中启用,并在初始化时指定名称即可。如果想要调整管脚信息,可以使用ESCodeMaker辅助,但要注意打开对应的外设。
SPI必须先调用begin才能使用其他函数
### 4.C++异常和RTTI
若使用c++异常,则该机制会占用大量内存(~18k),该内存会在C++部分初始化时使用malloc申请。在编译参数中加入-fno-exceptions禁用c++异常机制可去除该问题。
若使用RTTI(运行时类型识别),会需要额外的stdc++库支持,需要在CDK的Linker页面中,在Library Name中添加"stdc++",可通过在编译参数中加入-fno-rtti禁用,但由于CDK不区分C和C++的编译参数,会导致编译C文件时产生警告"warning: command-line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C"。
本BSP默认
**禁用异常**
,
**连接stdc++库**
。
### 5.已知问题
1.
开启C++选项后,即使未选择使用C++ thread,也会引入thread支持,此支持需要使用event,若未开启则会编译报错。需要在"RT-Thread Kernel → Inter-Thread communication"中,开启"Enable Event Flag"
2.
rt_atomic.h文件循环包含导致编译报错,临时解决方案:在编译器的宏定义中添加"__RT_ATOMIC_H
\_\_
",临时屏蔽该文件,之后的解决方案等待rt-thread更新
## 7 参考资料
-
[
工程师笔记 | 使用RT-Thread的Arduino兼容层开发ES32应用程序
](
https://mp.weixin.qq.com/s/O693pgCLl1xOGxE9O7zaHA
)
bsp/essemi/es32vf2264/applications/arduino_pinout/SConscript
0 → 100644
浏览文件 @
10551b54
from
building
import
*
cwd
=
GetCurrentDir
()
src
=
Glob
(
'*.c'
)
+
Glob
(
'*.cpp'
)
inc
=
[
cwd
]
group
=
DefineGroup
(
'RTduino'
,
src
,
depend
=
[
'PKG_USING_RTDUINO'
],
CPPPATH
=
inc
)
Return
(
'group'
)
bsp/essemi/es32vf2264/applications/arduino_pinout/arduino_pins.xlsx
0 → 100644
浏览文件 @
10551b54
文件已添加
bsp/essemi/es32vf2264/applications/arduino_pinout/examples/arduino_examples.cpp
0 → 100644
浏览文件 @
10551b54
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2021-12-10 Meco Man first version
* 2023-05-30 shiwa ES32VF2264
*/
#include <Arduino.h>
#define ARDU_TEST_GPIO
#define ARDU_TEST_PWM
#define ARDU_TEST_DIGITAL_READ
#define ARDU_TEST_INT
//#define ARDU_TEST_ADC_READ
//#define ARDU_TEST_I2C
//#define ARDU_TEST_SPI
//#define ARDU_TEST_ADAFRUIT_I2C
//#define ARDU_TEST_ADAFRUIT_SPI
//#define ARDU_TEST_UART
#ifdef ARDU_TEST_I2C
#include <Wire.h>
#endif
#ifdef ARDU_TEST_SPI
#include <SPI.h>
#endif
#if defined(ARDU_TEST_ADAFRUIT_I2C) || defined(ARDU_TEST_ADAFRUIT_SPI)
#include <Adafruit_BusIO_Register.h>
#endif
#ifdef ARDU_TEST_ADAFRUIT_I2C
#include <Adafruit_I2CDevice.h>
Adafruit_I2CDevice
i2c_dev
(
0x2D
);
Adafruit_BusIO_Register
i2c_reg
(
&
i2c_dev
,
0x4241
,
2
,
0
,
2
);
#endif
#ifdef ARDU_TEST_ADAFRUIT_SPI
#include "Adafruit_SPIDevice.h"
Adafruit_SPIDevice
spi_dev
(
D10
,
100000
);
#endif
static
char
buf
[
16
]
=
{
"test"
};
static
char
buf2
[
16
]
=
{
"AB"
};
void
test_int
()
{
Serial
.
println
(
"Interrupt Triggered"
);
}
void
setup
(
void
)
{
/* No unused warnings */
(
void
)
buf
;
(
void
)
buf2
;
pinMode
(
LED_BUILTIN
,
OUTPUT
);
Serial
.
begin
();
Serial
.
println
(
"Hello arduino"
);
#ifdef ARDU_TEST_GPIO //数字管脚输出
pinMode
(
D2
,
OUTPUT
);
pinMode
(
D4
,
OUTPUT
);
digitalWrite
(
D4
,
1
);
pinMode
(
D7
,
OUTPUT
);
digitalWrite
(
D7
,
0
);
pinMode
(
D18
,
OUTPUT
);
//LED6
#endif
#ifdef ARDU_TEST_INT //中断输入
attachInterrupt
(
digitalPinToInterrupt
(
D24
),
test_int
,
FALLING
);
#endif
#ifdef ARDU_TEST_DIGITAL_READ //数字管脚输入
pinMode
(
D20
,
INPUT
);
pinMode
(
D21
,
INPUT
);
pinMode
(
D22
,
INPUT
);
pinMode
(
D23
,
INPUT
);
#endif
#ifdef ARDU_TEST_PWM //测试PWM输出
analogWriteFrequency
(
10
);
analogWrite
(
D3
,
80
);
analogWrite
(
D5
,
127
);
analogWrite
(
D6
,
200
);
#endif
#ifdef ARDU_TEST_I2C //I2C
Wire
.
begin
();
#endif
#ifdef ARDU_TEST_SPI //SPI
SPI
.
begin
();
/* MSB Second IdleLow */
SPI
.
beginTransaction
(
SPISettings
(
100000
,
MSBFIRST
,
SPI_MODE1
));
pinMode
(
D10
,
OUTPUT
);
digitalWrite
(
D10
,
HIGH
);
#endif
#ifdef ARDU_TEST_ADAFRUIT_I2C //ADAFRUIT I2C
i2c_dev
.
begin
();
#endif
#ifdef ARDU_TEST_ADAFRUIT_SPI //ADAFRUIT SPI
spi_dev
.
begin
();
#endif
#ifdef ARDU_TEST_UART
Serial2
.
begin
();
#endif
}
void
loop
(
void
)
{
/* put your main code here, to run repeatedly: */
digitalWrite
(
LED_BUILTIN
,
!
digitalRead
(
LED_BUILTIN
));
//delay(250);
#ifdef ARDU_TEST_GPIO
digitalWrite
(
D2
,
1
);
digitalWrite
(
D18
,
0
);
#endif
delay
(
250
);
#ifdef ARDU_TEST_GPIO
digitalWrite
(
D2
,
0
);
digitalWrite
(
D18
,
1
);
#endif
delay
(
250
);
#ifdef ARDU_TEST_ADC_READ
int
val1
=
analogRead
(
A0
);
int
val2
=
analogRead
(
A1
);
rt_kprintf
(
"A0=%d,A2=%d
\r\n
"
,
val1
,
val2
);
#endif
#ifdef ARDU_TEST_DIGITAL_READ
if
(
digitalRead
(
D20
)
==
LOW
)
{
Serial
.
println
(
"UP"
);
}
if
(
digitalRead
(
D21
)
==
LOW
)
{
Serial
.
println
(
"DOWN"
);
}
if
(
digitalRead
(
D22
)
==
LOW
)
{
Serial
.
println
(
"LEFT"
);
}
if
(
digitalRead
(
D23
)
==
LOW
)
{
Serial
.
println
(
"RIGHT"
);
}
#endif
#ifdef ARDU_TEST_I2C
strcpy
(
buf
,
"Hello"
);
Wire
.
beginTransmission
(
0x2D
);
Wire
.
write
((
uint8_t
*
)
buf
,
strlen
(
buf
));
Wire
.
endTransmission
();
#endif
#ifdef ARDU_TEST_SPI
strcpy
(
buf
,
"ABCD"
);
digitalWrite
(
D10
,
LOW
);
SPI
.
transfer
((
uint8_t
*
)
buf
,
strlen
(
buf
));
digitalWrite
(
D10
,
HIGH
);
buf
[
4
]
=
0
;
Serial
.
print
(
buf
);
#endif
#ifdef ARDU_TEST_ADAFRUIT_I2C
strcpy
(
buf2
,
"Hello"
);
strcpy
(
buf
,
"RTduino"
);
i2c_dev
.
write
((
uint8_t
*
)
buf
,
strlen
(
buf
),
true
,
(
uint8_t
*
)
buf2
,
strlen
(
buf2
));
i2c_reg
.
write
((
uint8_t
*
)
buf2
,
5
);
#endif
#ifdef ARDU_TEST_ADAFRUIT_SPI
strcpy
(
buf
,
"TEST"
);
spi_dev
.
beginTransactionWithAssertingCS
();
spi_dev
.
transfer
((
uint8_t
*
)
buf
,
strlen
(
buf
));
spi_dev
.
endTransactionWithDeassertingCS
();
#endif
#ifdef ARDU_TEST_UART
Serial2
.
println
(
"Hello"
);
#endif
}
bsp/essemi/es32vf2264/applications/arduino_pinout/picture/image-20230602165933931.png
0 → 100644
浏览文件 @
10551b54
4.8 KB
bsp/essemi/es32vf2264/applications/arduino_pinout/pins_arduino.c
0 → 100644
浏览文件 @
10551b54
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-06-05 shiwa ES32VF2264
*/
#include <Arduino.h>
#include <board.h>
#include "drv_gpio.h"
#include "pins_arduino.h"
/*
{Arduino Pin, RT-Thread Pin [, Device Name, Channel]}
[] means optional
Digital pins must NOT give the device name and channel.
Analog pins MUST give the device name and channel(ADC, PWM or DAC).
Arduino Pin must keep in sequence.
*/
const
pin_map_t
pin_map_table
[]
=
{
{
D0
,
GET_PIN
(
C
,
11
),
"cuart2"
},
/* UART2-RX */
{
D1
,
GET_PIN
(
C
,
10
),
"cuart2"
},
/* UART2-TX */
{
D2
,
GET_PIN
(
B
,
5
)},
/* GPIO0 */
{
D3
,
GET_PIN
(
C
,
15
),
"pwm3"
,
4
},
/* PWM2 GP16C4T2 CH4 */
{
D4
,
GET_PIN
(
B
,
4
)},
/* GPIO1 */
{
D5
,
GET_PIN
(
C
,
7
),
"pwm2"
,
2
},
/* PWM2 GP16C4T1 CH2 */
{
D6
,
GET_PIN
(
C
,
6
),
"pwm0"
,
1
},
/* PWM2 AD16C4T0 CH1 */
{
D7
,
GET_PIN
(
A
,
8
)},
/* GPIO2 */
{
D8
,
GET_PIN
(
B
,
11
)},
/* GPIO3 */
{
D9
,
GET_PIN
(
B
,
10
)},
/* GPIO4 */
{
D10
,
GET_PIN
(
A
,
4
)},
/* GPIO5, SS */
{
D11
,
GET_PIN
(
A
,
7
),
"spi0"
},
/* SPI0-MOSI */
{
D12
,
GET_PIN
(
A
,
6
),
"spi0"
},
/* SPI0-MISO */
{
D13
,
GET_PIN
(
A
,
5
),
"spi0"
},
/* SPI0-SCK */
{
D14
,
GET_PIN
(
B
,
3
),
"i2c0"
},
/* I2C0-SDA */
{
D15
,
GET_PIN
(
B
,
2
),
"i2c0"
},
/* I2C0-SCL */
{
D16
,
GET_PIN
(
A
,
15
)},
/* LED3 */
{
D17
,
GET_PIN
(
C
,
12
)},
/* LED4 */
{
D18
,
GET_PIN
(
C
,
13
)},
/* LED5 */
{
D19
,
GET_PIN
(
C
,
14
)},
/* LED6 */
{
D20
,
GET_PIN
(
B
,
7
)},
/* KEY_UP */
{
D21
,
GET_PIN
(
B
,
9
)},
/* KEY_DOWN */
{
D22
,
GET_PIN
(
B
,
6
)},
/* KEY_LEFT */
{
D23
,
GET_PIN
(
B
,
8
)},
/* KEY_RIGHT */
{
D24
,
GET_PIN
(
D
,
2
)},
/* KEY_CENTER */
{
D25
,
GET_PIN
(
B
,
15
)},
/* GPIO/SPI1_MOSI */
{
D26
,
GET_PIN
(
B
,
14
)},
/* GPIO/SPI1_MISO */
{
D27
,
GET_PIN
(
B
,
13
)},
/* GPIO/SPI1_SCK */
{
D28
,
GET_PIN
(
B
,
12
)},
/* GPIO/SPI1_NSS */
{
A0
,
GET_PIN
(
C
,
1
),
"adc0"
,
1
},
/* ADC0 */
{
A1
,
GET_PIN
(
C
,
2
),
"adc0"
,
2
},
/* ADC0 */
};
bsp/essemi/es32vf2264/applications/arduino_pinout/pins_arduino.h
0 → 100644
浏览文件 @
10551b54
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2022-07-07 shiwa Adapt ES32F369x
*/
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
/* pins alias. Must keep in sequence */
#define D0 (0)
#define D1 (1)
#define D2 (2)
#define D3 (3)
#define D4 (4)
#define D5 (5)
#define D6 (6)
#define D7 (7)
#define D8 (8)
#define D9 (9)
#define D10 (10)
#define D11 (11)
#define D12 (12)
#define D13 (13)
#define D14 (14)
#define D15 (15)
#define D16 (16)
#define D17 (17)
#define D18 (18)
#define D19 (19)
#define D20 (20)
#define D21 (21)
#define D22 (22)
#define D23 (23)
#define D24 (24)
#define D25 (25)
#define D26 (26)
#define D27 (27)
#define D28 (28)
#define A0 (25)
#define A1 (26)
#define F_CPU 72000000L
/* CPU: 72MHz */
#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c0"
#define SS D10
#define RTDUINO_DEFAULT_SPI_BUS_NAME "spi0"
#define RTDUINO_SERIAL2_DEVICE_NAME "cuart2"
#define LED_BUILTIN D16
#endif
/* Pins_Arduino_h */
bsp/essemi/es32vf2264/drivers/ES/es_conf_info_map.h
浏览文件 @
10551b54
...
@@ -573,6 +573,26 @@ static const struct pin_index pins[] =
...
@@ -573,6 +573,26 @@ static const struct pin_index pins[] =
#endif
#endif
#ifndef ES_MAP__PIN_PC11_USED
#define ES_MAP__PIN_PC11_USED
#ifndef ES_CUART2_RX_GPIO_FUNC
#define ES_CUART2_RX_GPIO_FUNC ALD_GPIO_FUNC_4
#endif
#ifndef ES_CUART2_RX_GPIO_PORT
#define ES_CUART2_RX_GPIO_PORT GPIOC
#endif
#ifndef ES_CUART2_RX_GPIO_PIN
#define ES_CUART2_RX_GPIO_PIN ALD_GPIO_PIN_11
#endif
#ifndef ES_CUART2_RX_PIN
#ifdef ES_PIN_GPIO_C_11
#define ES_CUART2_RX_PIN ES_PIN_GPIO_C_11
#endif
#endif
#endif
#ifndef ES_MAP__PIN_PD0_USED
#ifndef ES_MAP__PIN_PD0_USED
#define ES_MAP__PIN_PD0_USED
#define ES_MAP__PIN_PD0_USED
#ifndef ES_CUART2_RX_GPIO_FUNC
#ifndef ES_CUART2_RX_GPIO_FUNC
...
@@ -633,6 +653,26 @@ static const struct pin_index pins[] =
...
@@ -633,6 +653,26 @@ static const struct pin_index pins[] =
#endif
#endif
#ifndef ES_MAP__PIN_PC10_USED
#define ES_MAP__PIN_PC10_USED
#ifndef ES_CUART2_TX_GPIO_FUNC
#define ES_CUART2_TX_GPIO_FUNC ALD_GPIO_FUNC_4
#endif
#ifndef ES_CUART2_TX_GPIO_PORT
#define ES_CUART2_TX_GPIO_PORT GPIOC
#endif
#ifndef ES_CUART2_TX_GPIO_PIN
#define ES_CUART2_TX_GPIO_PIN ALD_GPIO_PIN_10
#endif
#ifndef ES_CUART2_TX_PIN
#ifdef ES_PIN_GPIO_C_10
#define ES_CUART2_TX_PIN ES_PIN_GPIO_C_10
#endif
#endif
#endif
#ifndef ES_MAP__PIN_PD1_USED
#ifndef ES_MAP__PIN_PD1_USED
#define ES_MAP__PIN_PD1_USED
#define ES_MAP__PIN_PD1_USED
#ifndef ES_CUART2_TX_GPIO_FUNC
#ifndef ES_CUART2_TX_GPIO_FUNC
...
@@ -2993,26 +3033,6 @@ static const struct pin_index pins[] =
...
@@ -2993,26 +3033,6 @@ static const struct pin_index pins[] =
#endif
#endif
#ifndef ES_MAP__PIN_PC10_USED
#define ES_MAP__PIN_PC10_USED
#ifndef ES_CUART2_TX_GPIO_FUNC
#define ES_CUART2_TX_GPIO_FUNC ALD_GPIO_FUNC_4
#endif
#ifndef ES_CUART2_TX_GPIO_PORT
#define ES_CUART2_TX_GPIO_PORT GPIOC
#endif
#ifndef ES_CUART2_TX_GPIO_PIN
#define ES_CUART2_TX_GPIO_PIN ALD_GPIO_PIN_10
#endif
#ifndef ES_CUART2_TX_PIN
#ifdef ES_PIN_GPIO_C_10
#define ES_CUART2_TX_PIN ES_PIN_GPIO_C_10
#endif
#endif
#endif
#ifndef ES_MAP__PIN_PC10_USED
#ifndef ES_MAP__PIN_PC10_USED
#define ES_MAP__PIN_PC10_USED
#define ES_MAP__PIN_PC10_USED
#ifndef ES_EUART1_TX_GPIO_FUNC
#ifndef ES_EUART1_TX_GPIO_FUNC
...
@@ -3073,26 +3093,6 @@ static const struct pin_index pins[] =
...
@@ -3073,26 +3093,6 @@ static const struct pin_index pins[] =
#endif
#endif
#ifndef ES_MAP__PIN_PC11_USED
#define ES_MAP__PIN_PC11_USED
#ifndef ES_CUART2_RX_GPIO_FUNC
#define ES_CUART2_RX_GPIO_FUNC ALD_GPIO_FUNC_4
#endif
#ifndef ES_CUART2_RX_GPIO_PORT
#define ES_CUART2_RX_GPIO_PORT GPIOC
#endif
#ifndef ES_CUART2_RX_GPIO_PIN
#define ES_CUART2_RX_GPIO_PIN ALD_GPIO_PIN_11
#endif
#ifndef ES_CUART2_RX_PIN
#ifdef ES_PIN_GPIO_C_11
#define ES_CUART2_RX_PIN ES_PIN_GPIO_C_11
#endif
#endif
#endif
#ifndef ES_MAP__PIN_PC11_USED
#ifndef ES_MAP__PIN_PC11_USED
#define ES_MAP__PIN_PC11_USED
#define ES_MAP__PIN_PC11_USED
#ifndef ES_I2C1_SCL_GPIO_FUNC
#ifndef ES_I2C1_SCL_GPIO_FUNC
...
...
bsp/essemi/es32vf2264/drivers/ES/es_conf_info_pwm.h
浏览文件 @
10551b54
...
@@ -61,11 +61,11 @@
...
@@ -61,11 +61,11 @@
#ifndef ES_DEVICE_NAME_GP16C4T0_PWM
#ifndef ES_DEVICE_NAME_GP16C4T0_PWM
#define ES_DEVICE_NAME_GP16C4T0_PWM "pwm1"
#define ES_DEVICE_NAME_GP16C4T0_PWM "pwm1"
#endif
#endif
#ifndef ES_DEVICE_NAME_GP16C
2T0
_PWM
#ifndef ES_DEVICE_NAME_GP16C
4T1
_PWM
#define ES_DEVICE_NAME_GP16C
2T0
_PWM "pwm2"
#define ES_DEVICE_NAME_GP16C
4T1
_PWM "pwm2"
#endif
#endif
#ifndef ES_DEVICE_NAME_GP16C
2T1
_PWM
#ifndef ES_DEVICE_NAME_GP16C
4T2
_PWM
#define ES_DEVICE_NAME_GP16C
2T1
_PWM "pwm3"
#define ES_DEVICE_NAME_GP16C
4T2
_PWM "pwm3"
#endif
#endif
...
...
bsp/essemi/es32vf2264/drivers/Kconfig
浏览文件 @
10551b54
...
@@ -8,6 +8,23 @@ menu "Hardware Drivers Config"
...
@@ -8,6 +8,23 @@ menu "Hardware Drivers Config"
source "drivers/ES/Kconfig"
source "drivers/ES/Kconfig"
config BSP_USING_ARDUINO
bool "Compatible with Arduino Ecosystem (RTduino)"
select PKG_USING_RTDUINO
select BSP_USING_GPIO
select BSP_USING_CUART1
select BSP_USING_CUART2
select BSP_USING_SPI0
select BSP_USING_SPI1
select BSP_USING_I2C0
select BSP_USING_ADC0
select BSP_USING_AD16C4T0_PWM
select BSP_USING_GP16C4T1_PWM
select BSP_USING_GP16C4T2_PWM
imply RTDUINO_USING_SERVO
imply RTDUINO_USING_WIRE
imply RTDUINO_USING_SPI
default n
endmenu
endmenu
menu "Onboard Peripheral Drivers"
menu "Onboard Peripheral Drivers"
...
...
bsp/essemi/es32vf2264/drivers/SConscript
浏览文件 @
10551b54
...
@@ -72,8 +72,11 @@ CPPPATH = CPPPATH + [cwd + '/ES']
...
@@ -72,8 +72,11 @@ CPPPATH = CPPPATH + [cwd + '/ES']
#__SYS_SELECT_H__ 用来规避冲突
#__SYS_SELECT_H__ 用来规避冲突
#cdkrepo\toolchain\xtgccelfnewlib\v2.6.1\r\riscv64-unknown-elf\include\sys\select.h
#cdkrepo\toolchain\xtgccelfnewlib\v2.6.1\r\riscv64-unknown-elf\include\sys\select.h
#components/libc/compilers/common/include/sys/select.h
#components/libc/compilers/common/include/sys/select.h
CPPDEFINES
=
[
'__SYS_SELECT_H__'
]
CPPDEFINES
=
[
'__SYS_SELECT_H__'
,
'__RT_ATOMIC_H__'
]
group
=
DefineGroup
(
'Drivers'
,
src
,
depend
=
[
''
],
CPPPATH
=
CPPPATH
,
CPPDEFINES
=
CPPDEFINES
)
CCFLAGS
=
'-fno-exceptions'
#LINKFLAGS='-lstdc++'
LIBS
=
[
'stdc++'
]
group
=
DefineGroup
(
'Drivers'
,
src
,
depend
=
[
''
],
CPPPATH
=
CPPPATH
,
CPPDEFINES
=
CPPDEFINES
,
CCFLAGS
=
CCFLAGS
,
LIBS
=
LIBS
)
objs
=
objs
+
group
objs
=
objs
+
group
Return
(
'objs'
)
Return
(
'objs'
)
...
...
bsp/essemi/es32vf2264/drivers/drv_pwm.c
浏览文件 @
10551b54
...
@@ -173,9 +173,9 @@ int rt_hw_pwm_init(void)
...
@@ -173,9 +173,9 @@ int rt_hw_pwm_init(void)
#ifdef BSP_USING_AD16C4T0_PWM
/* 4 channels */
#ifdef BSP_USING_AD16C4T0_PWM
/* 4 channels */
static
struct
rt_device_pwm
ad16c4t0_pwm_dev
;
static
struct
rt_device_pwm
ad16c4t0_pwm_dev
;
static
timer_handle_t
ad16c4t0_timer_initstruct
;
static
ald_
timer_handle_t
ad16c4t0_timer_initstruct
;
ad16c4t0_timer_initstruct
.
perh
=
AD16C4T
0
;
ad16c4t0_timer_initstruct
.
perh
=
AD16C4T
;
ald_timer_pwm_init
(
&
ad16c4t0_timer_initstruct
);
ald_timer_pwm_init
(
&
ad16c4t0_timer_initstruct
);
/* gpio initialization */
/* gpio initialization */
...
@@ -204,108 +204,6 @@ int rt_hw_pwm_init(void)
...
@@ -204,108 +204,6 @@ int rt_hw_pwm_init(void)
&
ad16c4t0_timer_initstruct
);
&
ad16c4t0_timer_initstruct
);
#endif
#endif
#ifdef BSP_USING_AD16C4T1_PWM
/* 4 channels */
static
struct
rt_device_pwm
ad16c4t1_pwm_dev
;
static
timer_handle_t
ad16c4t1_timer_initstruct
;
ad16c4t1_timer_initstruct
.
perh
=
AD16C4T1
;
ald_timer_pwm_init
(
&
ad16c4t1_timer_initstruct
);
/* gpio initialization */
#if defined(ES_AD16C4T1_CH1_GPIO_FUNC)&&defined(ES_AD16C4T1_CH1_GPIO_PORT)&&defined(ES_AD16C4T1_CH1_GPIO_PIN)
gpio_initstructure
.
func
=
ES_AD16C4T1_CH1_GPIO_FUNC
;
ald_gpio_init
(
ES_AD16C4T1_CH1_GPIO_PORT
,
ES_AD16C4T1_CH1_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_AD16C4T1_CH2_GPIO_FUNC)&&defined(ES_AD16C4T1_CH2_GPIO_PORT)&&defined(ES_AD16C4T1_CH2_GPIO_PIN)
gpio_initstructure
.
func
=
ES_AD16C4T1_CH2_GPIO_FUNC
;
ald_gpio_init
(
ES_AD16C4T1_CH2_GPIO_PORT
,
ES_AD16C4T1_CH2_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_AD16C4T1_CH3_GPIO_FUNC)&&defined(ES_AD16C4T1_CH3_GPIO_PORT)&&defined(ES_AD16C4T1_CH3_GPIO_PIN)
gpio_initstructure
.
func
=
ES_AD16C4T1_CH3_GPIO_FUNC
;
ald_gpio_init
(
ES_AD16C4T1_CH3_GPIO_PORT
,
ES_AD16C4T1_CH3_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_AD16C4T1_CH4_GPIO_FUNC)&&defined(ES_AD16C4T1_CH4_GPIO_PORT)&&defined(ES_AD16C4T1_CH4_GPIO_PIN)
gpio_initstructure
.
func
=
ES_AD16C4T1_CH4_GPIO_FUNC
;
ald_gpio_init
(
ES_AD16C4T1_CH4_GPIO_PORT
,
ES_AD16C4T1_CH4_GPIO_PIN
,
&
gpio_initstructure
);
#endif
ret
=
rt_device_pwm_register
(
&
ad16c4t1_pwm_dev
,
ES_DEVICE_NAME_AD16C4T1_PWM
,
&
es32f3_pwm_ops
,
&
ad16c4t1_timer_initstruct
);
#endif
#ifdef BSP_USING_GP32C4T0_PWM
/* 4 channels */
static
struct
rt_device_pwm
gp32c4t0_pwm_dev
;
static
timer_handle_t
gp32c4t0_timer_initstruct
;
gp32c4t0_timer_initstruct
.
perh
=
GP32C4T0
;
ald_timer_pwm_init
(
&
gp32c4t0_timer_initstruct
);
/* gpio initialization */
#if defined(ES_GP32C4T0_CH1_GPIO_FUNC)&&defined(ES_GP32C4T0_CH1_GPIO_PORT)&&defined(ES_GP32C4T0_CH1_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T0_CH1_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T0_CH1_GPIO_PORT
,
ES_GP32C4T0_CH1_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP32C4T0_CH2_GPIO_FUNC)&&defined(ES_GP32C4T0_CH2_GPIO_PORT)&&defined(ES_GP32C4T0_CH2_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T0_CH2_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T0_CH2_GPIO_PORT
,
ES_GP32C4T0_CH2_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP32C4T0_CH3_GPIO_FUNC)&&defined(ES_GP32C4T0_CH3_GPIO_PORT)&&defined(ES_GP32C4T0_CH3_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T0_CH3_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T0_CH3_GPIO_PORT
,
ES_GP32C4T0_CH3_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP32C4T0_CH4_GPIO_FUNC)&&defined(ES_GP32C4T0_CH4_GPIO_PORT)&&defined(ES_GP32C4T0_CH4_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T0_CH4_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T0_CH4_GPIO_PORT
,
ES_GP32C4T0_CH4_GPIO_PIN
,
&
gpio_initstructure
);
#endif
ret
=
rt_device_pwm_register
(
&
gp32c4t0_pwm_dev
,
ES_DEVICE_NAME_GP32C4T0_PWM
,
&
es32f3_pwm_ops
,
&
gp32c4t0_timer_initstruct
);
#endif
#ifdef BSP_USING_GP32C4T1_PWM
/* 4 channels */
static
struct
rt_device_pwm
gp32c4t1_pwm_dev
;
static
timer_handle_t
gp32c4t1_timer_initstruct
;
gp32c4t1_timer_initstruct
.
perh
=
GP32C4T1
;
ald_timer_pwm_init
(
&
gp32c4t1_timer_initstruct
);
/* gpio initialization */
#if defined(ES_GP32C4T1_CH1_GPIO_FUNC)&&defined(ES_GP32C4T1_CH1_GPIO_PORT)&&defined(ES_GP32C4T1_CH1_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T1_CH1_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T1_CH1_GPIO_PORT
,
ES_GP32C4T1_CH1_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP32C4T1_CH2_GPIO_FUNC)&&defined(ES_GP32C4T1_CH2_GPIO_PORT)&&defined(ES_GP32C4T1_CH2_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T1_CH2_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T1_CH2_GPIO_PORT
,
ES_GP32C4T1_CH2_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP32C4T1_CH3_GPIO_FUNC)&&defined(ES_GP32C4T1_CH3_GPIO_PORT)&&defined(ES_GP32C4T1_CH3_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T1_CH3_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T1_CH3_GPIO_PORT
,
ES_GP32C4T1_CH3_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP32C4T1_CH4_GPIO_FUNC)&&defined(ES_GP32C4T1_CH4_GPIO_PORT)&&defined(ES_GP32C4T1_CH4_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP32C4T1_CH4_GPIO_FUNC
;
ald_gpio_init
(
ES_GP32C4T1_CH4_GPIO_PORT
,
ES_GP32C4T1_CH4_GPIO_PIN
,
&
gpio_initstructure
);
#endif
ret
=
rt_device_pwm_register
(
&
gp32c4t1_pwm_dev
,
ES_DEVICE_NAME_GP32C4T1_PWM
,
&
es32f3_pwm_ops
,
&
gp32c4t1_timer_initstruct
);
#endif
#ifdef BSP_USING_GP16C4T0_PWM
/* 4 channels */
#ifdef BSP_USING_GP16C4T0_PWM
/* 4 channels */
static
struct
rt_device_pwm
gp16c4t0_pwm_dev
;
static
struct
rt_device_pwm
gp16c4t0_pwm_dev
;
static
ald_timer_handle_t
gp16c4t0_timer_initstruct
;
static
ald_timer_handle_t
gp16c4t0_timer_initstruct
;
...
@@ -339,10 +237,9 @@ int rt_hw_pwm_init(void)
...
@@ -339,10 +237,9 @@ int rt_hw_pwm_init(void)
&
gp16c4t0_timer_initstruct
);
&
gp16c4t0_timer_initstruct
);
#endif
#endif
#ifdef BSP_USING_GP16C4T1_PWM
/* 4 channels */
#ifdef BSP_USING_GP16C4T1_PWM
/* 4 channels */
static
struct
rt_device_pwm
gp16c4t1_pwm_dev
;
static
struct
rt_device_pwm
gp16c4t1_pwm_dev
;
static
timer_handle_t
gp16c4t1_timer_initstruct
;
static
ald_
timer_handle_t
gp16c4t1_timer_initstruct
;
gp16c4t1_timer_initstruct
.
perh
=
GP16C4T1
;
gp16c4t1_timer_initstruct
.
perh
=
GP16C4T1
;
ald_timer_pwm_init
(
&
gp16c4t1_timer_initstruct
);
ald_timer_pwm_init
(
&
gp16c4t1_timer_initstruct
);
...
@@ -373,6 +270,39 @@ int rt_hw_pwm_init(void)
...
@@ -373,6 +270,39 @@ int rt_hw_pwm_init(void)
&
gp16c4t1_timer_initstruct
);
&
gp16c4t1_timer_initstruct
);
#endif
#endif
#ifdef BSP_USING_GP16C4T2_PWM
/* 4 channels */
static
struct
rt_device_pwm
gp16c4t2_pwm_dev
;
static
ald_timer_handle_t
gp16c4t2_timer_initstruct
;
gp16c4t2_timer_initstruct
.
perh
=
GP16C4T2
;
ald_timer_pwm_init
(
&
gp16c4t2_timer_initstruct
);
/* gpio initialization */
#if defined(ES_GP16C4T2_CH1_GPIO_FUNC)&&defined(ES_GP16C4T2_CH1_GPIO_PORT)&&defined(ES_GP16C4T2_CH1_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP16C4T2_CH1_GPIO_FUNC
;
ald_gpio_init
(
ES_GP16C4T2_CH1_GPIO_PORT
,
ES_GP16C4T2_CH1_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP16C4T2_CH2_GPIO_FUNC)&&defined(ES_GP16C4T2_CH2_GPIO_PORT)&&defined(ES_GP16C4T2_CH2_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP16C4T2_CH2_GPIO_FUNC
;
ald_gpio_init
(
ES_GP16C4T2_CH2_GPIO_PORT
,
ES_GP16C4T2_CH2_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP16C4T2_CH3_GPIO_FUNC)&&defined(ES_GP16C4T2_CH3_GPIO_PORT)&&defined(ES_GP16C4T2_CH3_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP16C4T2_CH3_GPIO_FUNC
;
ald_gpio_init
(
ES_GP16C4T2_CH3_GPIO_PORT
,
ES_GP16C4T2_CH3_GPIO_PIN
,
&
gpio_initstructure
);
#endif
#if defined(ES_GP16C4T2_CH4_GPIO_FUNC)&&defined(ES_GP16C4T2_CH4_GPIO_PORT)&&defined(ES_GP16C4T2_CH4_GPIO_PIN)
gpio_initstructure
.
func
=
ES_GP16C4T2_CH4_GPIO_FUNC
;
ald_gpio_init
(
ES_GP16C4T2_CH4_GPIO_PORT
,
ES_GP16C4T2_CH4_GPIO_PIN
,
&
gpio_initstructure
);
#endif
ret
=
rt_device_pwm_register
(
&
gp16c4t2_pwm_dev
,
ES_DEVICE_NAME_GP16C4T2_PWM
,
&
es32f3_pwm_ops
,
&
gp16c4t2_timer_initstruct
);
#endif
return
ret
;
return
ret
;
}
}
INIT_DEVICE_EXPORT
(
rt_hw_pwm_init
);
INIT_DEVICE_EXPORT
(
rt_hw_pwm_init
);
...
...
bsp/essemi/es32vf2264/drivers/drv_spi.c
浏览文件 @
10551b54
...
@@ -249,12 +249,12 @@ rt_err_t es32f3_spi_device_attach(rt_uint32_t pin, const char *bus_name, const c
...
@@ -249,12 +249,12 @@ rt_err_t es32f3_spi_device_attach(rt_uint32_t pin, const char *bus_name, const c
#ifdef BSP_USING_SPI1
#ifdef BSP_USING_SPI1
static
struct
rt_spi_bus
_spi_bus1
;
static
struct
rt_spi_bus
_spi_bus1
;
static
spi_handle_t
_spi1
;
static
ald_
spi_handle_t
_spi1
;
#endif
#endif
#ifdef BSP_USING_SPI2
#ifdef BSP_USING_SPI2
static
struct
rt_spi_bus
_spi_bus2
;
static
struct
rt_spi_bus
_spi_bus2
;
static
spi_handle_t
_spi2
;
static
ald_
spi_handle_t
_spi2
;
#endif
#endif
int
rt_hw_spi_init
(
void
)
int
rt_hw_spi_init
(
void
)
...
@@ -328,7 +328,7 @@ int rt_hw_spi_init(void)
...
@@ -328,7 +328,7 @@ int rt_hw_spi_init(void)
spi
=
&
_spi1
;
spi
=
&
_spi1
;
/* SPI1 gpio init */
/* SPI1 gpio init */
gpio_instruct
.
mode
=
GPIO_MODE_OUTPUT
;
gpio_instruct
.
mode
=
ALD_
GPIO_MODE_OUTPUT
;
#if defined(ES_SPI1_SCK_GPIO_FUNC)&&defined(ES_SPI1_SCK_GPIO_PORT)&&defined(ES_SPI1_SCK_GPIO_PIN)
#if defined(ES_SPI1_SCK_GPIO_FUNC)&&defined(ES_SPI1_SCK_GPIO_PORT)&&defined(ES_SPI1_SCK_GPIO_PIN)
gpio_instruct
.
func
=
ES_SPI1_SCK_GPIO_FUNC
;
gpio_instruct
.
func
=
ES_SPI1_SCK_GPIO_FUNC
;
...
@@ -341,7 +341,7 @@ int rt_hw_spi_init(void)
...
@@ -341,7 +341,7 @@ int rt_hw_spi_init(void)
#endif
#endif
#if !defined(ES_SPI1_I2S_MODE)
#if !defined(ES_SPI1_I2S_MODE)
gpio_instruct
.
mode
=
GPIO_MODE_INPUT
;
gpio_instruct
.
mode
=
ALD_
GPIO_MODE_INPUT
;
#endif
#endif
#if defined(ES_SPI1_MISO_GPIO_FUNC)&&defined(ES_SPI1_MISO_GPIO_PORT)&&defined(ES_SPI1_MISO_GPIO_PIN)
#if defined(ES_SPI1_MISO_GPIO_FUNC)&&defined(ES_SPI1_MISO_GPIO_PORT)&&defined(ES_SPI1_MISO_GPIO_PIN)
...
@@ -379,7 +379,7 @@ int rt_hw_spi_init(void)
...
@@ -379,7 +379,7 @@ int rt_hw_spi_init(void)
spi
=
&
_spi2
;
spi
=
&
_spi2
;
/* SPI2 gpio init */
/* SPI2 gpio init */
gpio_instruct
.
mode
=
GPIO_MODE_OUTPUT
;
gpio_instruct
.
mode
=
ALD_
GPIO_MODE_OUTPUT
;
#if defined(ES_SPI2_SCK_GPIO_FUNC)&&defined(ES_SPI2_SCK_GPIO_PORT)&&defined(ES_SPI2_SCK_GPIO_PIN)
#if defined(ES_SPI2_SCK_GPIO_FUNC)&&defined(ES_SPI2_SCK_GPIO_PORT)&&defined(ES_SPI2_SCK_GPIO_PIN)
gpio_instruct
.
func
=
ES_SPI2_SCK_GPIO_FUNC
;
gpio_instruct
.
func
=
ES_SPI2_SCK_GPIO_FUNC
;
...
...
bsp/essemi/es32vf2264/drivers/es32vf2264.ld
浏览文件 @
10551b54
...
@@ -44,6 +44,13 @@ SECTIONS
...
@@ -44,6 +44,13 @@ SECTIONS
*(.jcr)
*(.jcr)
KEEP (*(.init))
KEEP (*(.init))
KEEP (*(.fini))
KEEP (*(.fini))
. = ALIGN (4) ;
PROVIDE(__ctors_start__ = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
PROVIDE(__ctors_end__ = .);
. = ALIGN(0x40) ;
. = ALIGN(0x40) ;
KEEP(*startup_es32vf2264.o(*.vectors*))
KEEP(*startup_es32vf2264.o(*.vectors*))
...
@@ -105,14 +112,6 @@ SECTIONS
...
@@ -105,14 +112,6 @@ SECTIONS
*(.rodata.str1.4)
*(.rodata.str1.4)
*(.srodata*)
*(.srodata*)
. = ALIGN(0x4) ;
. = ALIGN(0x4) ;
__ctor_start__ = .;
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
__ctor_end__ = .;
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
__dtor_end__ = .;
. = ALIGN(0x4) ;
__erodata = .;
__erodata = .;
__rodata_end__ = .;
__rodata_end__ = .;
} > REGION_RODATA
} > REGION_RODATA
...
@@ -141,6 +140,10 @@ SECTIONS
...
@@ -141,6 +140,10 @@ SECTIONS
__start_cmd = .;
__start_cmd = .;
*(.bootloaddata.cmd)
*(.bootloaddata.cmd)
. = ALIGN(4) ;
. = ALIGN(4) ;
PROVIDE(__dtors_start__ = .);
KEEP(*(SORT(.dtors.*)))
KEEP(*(.dtors))
PROVIDE(__dtors_end__ = .);
__stop_cmd = .;
__stop_cmd = .;
__global_pointer$ = .;
__global_pointer$ = .;
*(.sdata)
*(.sdata)
...
...
bsp/essemi/es32vf2264/libraries/ALD/ES32VF2264/Include/ald_adc.h
浏览文件 @
10551b54
...
@@ -571,7 +571,7 @@ uint32_t ald_adc_get_error(ald_adc_handle_t *hperh);
...
@@ -571,7 +571,7 @@ uint32_t ald_adc_get_error(ald_adc_handle_t *hperh);
* @}
* @}
*/
*/
#ifdef __cplusplus
#ifdef __cplusplus
extern
"C"
}
}
#endif
/* __cplusplus */
#endif
/* __cplusplus */
#endif
/* __ALD_ADC_H */
#endif
/* __ALD_ADC_H */
bsp/essemi/es32vf2264/libraries/RV_CORE/Device/EastSoft/ES32VF2264/Include/es32vf2264.h
浏览文件 @
10551b54
...
@@ -31,8 +31,11 @@
...
@@ -31,8 +31,11 @@
#ifndef __ES32VF2264_H__
#ifndef __ES32VF2264_H__
#define __ES32VF2264_H__
#define __ES32VF2264_H__
#ifdef __cplusplus
#define __I volatile
/* defines 'read only' permissions */
#else
#define __I volatile const
/* defines 'read only' permissions */
#define __I volatile const
/* defines 'read only' permissions */
#endif
#define __O volatile
/* defines 'write only' permissions */
#define __O volatile
/* defines 'write only' permissions */
#define __IO volatile
/* defines 'read / write' permissions */
#define __IO volatile
/* defines 'read / write' permissions */
...
...
bsp/essemi/es32vf2264/template.cdkproj
浏览文件 @
10551b54
...
@@ -140,8 +140,8 @@ BareMetal: Without RTOS
...
@@ -140,8 +140,8 @@ BareMetal: Without RTOS
<InhibitWarn>
no
</InhibitWarn>
<InhibitWarn>
no
</InhibitWarn>
<AllWarn>
yes
</AllWarn>
<AllWarn>
yes
</AllWarn>
<WarnErr>
no
</WarnErr>
<WarnErr>
no
</WarnErr>
<OneElfS>
no
</OneElfS>
<OneElfS>
yes
</OneElfS>
<OneElfSPerData>
no
</OneElfSPerData>
<OneElfSPerData>
yes
</OneElfSPerData>
<Fstrict>
no
</Fstrict>
<Fstrict>
no
</Fstrict>
</Compiler>
</Compiler>
<Asm>
<Asm>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录