diff --git a/bsp/gd32vf103v-eval/.config b/bsp/gd32vf103v-eval/.config index b50d5224932b76c5f7dbdf3dfa05fe7eeee3fb3c..d05203a7904e3ec129b8d59e787e03bc55d6e090 100644 --- a/bsp/gd32vf103v-eval/.config +++ b/bsp/gd32vf103v-eval/.config @@ -99,7 +99,7 @@ CONFIG_FINSH_CMD_SIZE=80 # CONFIG_FINSH_USING_AUTH is not set CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_USING_MSH_DEFAULT=y -# CONFIG_FINSH_USING_MSH_ONLY is not set +CONFIG_FINSH_USING_MSH_ONLY=y CONFIG_FINSH_ARG_MAX=10 # @@ -134,6 +134,8 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_RT_USING_SENSOR is not set # CONFIG_RT_USING_TOUCH is not set # CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set # CONFIG_RT_USING_WIFI is not set # @@ -145,7 +147,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # # POSIX layer and C standard library # -# CONFIG_RT_USING_LIBC is not set +CONFIG_RT_USING_LIBC=y # CONFIG_RT_USING_PTHREADS is not set # @@ -240,6 +242,9 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_PKG_USING_AIRKISS_OPEN is not set # CONFIG_PKG_USING_LIBRWS is not set # CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set # # security packages @@ -329,6 +334,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_PKG_USING_MINILZO is not set # CONFIG_PKG_USING_QUICKLZ is not set # CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set # CONFIG_PKG_USING_CANFESTIVAL is not set # CONFIG_PKG_USING_ZLIB is not set # CONFIG_PKG_USING_DSTR is not set @@ -347,36 +353,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_PKG_USING_VI is not set # CONFIG_PKG_USING_NNOM is not set # CONFIG_PKG_USING_LIBANN is not set - -# -# Privated Packages of RealThread -# -# CONFIG_PKG_USING_CODEC is not set -# CONFIG_PKG_USING_PLAYER is not set -# CONFIG_PKG_USING_MPLAYER is not set -# CONFIG_PKG_USING_PERSIMMON_SRC is not set -# CONFIG_PKG_USING_JS_PERSIMMON is not set -# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set - -# -# Network Utilities -# -# CONFIG_PKG_USING_WICED is not set -# CONFIG_PKG_USING_CLOUDSDK is not set -# CONFIG_PKG_USING_COREMARK is not set -# CONFIG_PKG_USING_POWER_MANAGER is not set -# CONFIG_PKG_USING_RT_OTA is not set -# CONFIG_PKG_USING_RDBD_SRC is not set -# CONFIG_PKG_USING_RTINSIGHT is not set -# CONFIG_PKG_USING_SMARTCONFIG is not set -# CONFIG_PKG_USING_RTX is not set -# CONFIG_RT_USING_TESTCASE is not set -# CONFIG_PKG_USING_NGHTTP2 is not set -# CONFIG_PKG_USING_AVS is not set -# CONFIG_PKG_USING_JOYLINK is not set -# CONFIG_PKG_USING_STS is not set -# CONFIG_PKG_USING_DLMS is not set -# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set +# CONFIG_PKG_USING_ELAPACK is not set # # Hardware Drivers Config diff --git a/bsp/gd32vf103v-eval/board/board.c b/bsp/gd32vf103v-eval/board/board.c index 6e666c281c83e5c00b40438bae94ec46c4725354..5ddcccafa5ffe9a40dbf1bdb948ae90443c60544 100644 --- a/bsp/gd32vf103v-eval/board/board.c +++ b/bsp/gd32vf103v-eval/board/board.c @@ -41,6 +41,12 @@ void eclic_mtip_handler(void) { rt_interrupt_leave(); } +/* fixed misaligned bug for qemu */ +void *__wrap_memset(void *s, int c, size_t n) +{ + return rt_memset(s, c, n); +} + void rt_hw_board_init(void) { systick_config(TMR_FREQ / RT_TICK_PER_SECOND); diff --git a/bsp/gd32vf103v-eval/libraries/SConscript b/bsp/gd32vf103v-eval/libraries/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..e7a4f5c3eb20546aa3b6eaa1c50a43211d129e44 --- /dev/null +++ b/bsp/gd32vf103v-eval/libraries/SConscript @@ -0,0 +1,26 @@ +# RT-Thread building script for component + +Import('rtconfig') +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() + +src = Glob('GD32VF103_standard_peripheral/Source/*.c') +src += Glob('n22/env_Eclipse/*.c') +src += Glob('n22/stubs/*.c') +src += ['GD32VF103_standard_peripheral/system_gd32vf103.c', + 'n22/drivers/n22_func.c', + 'n22/env_Eclipse/start.S', + 'n22/env_Eclipse/entry.S'] + +CPPPATH = [ cwd + '/GD32VF103_standard_peripheral/Include', + cwd + '/GD32VF103_standard_peripheral', + cwd + '/n22/drivers', + cwd + '/n22/stubs'] + +CPPDEFINES = [] + +group = DefineGroup('Libraries', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) + +Return('group') diff --git a/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c b/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c index 10ff5a794958e2a2dc351a1a72d963c72179fb41..ed2ed78c98aee9e6c0577ac0a30354da57125568 100644 --- a/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c +++ b/bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c @@ -15,9 +15,6 @@ __attribute__((weak)) uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp) { handle_nmi(); } write(1, "trap\n", 5); - printf("In trap handler, the mcause is %d\n", mcause); - printf("In trap handler, the mepc is 0x%x\n", read_csr(mepc)); - printf("In trap handler, the mtval is 0x%x\n", read_csr(mbadaddr)); _exit(mcause); return 0; } diff --git a/bsp/gd32vf103v-eval/rtconfig.h b/bsp/gd32vf103v-eval/rtconfig.h index 5d879925975332641f7de1f51b3648fafd28538b..b6fea0cb1f4d0ee12a67752b8a2f47bd9fb938e6 100644 --- a/bsp/gd32vf103v-eval/rtconfig.h +++ b/bsp/gd32vf103v-eval/rtconfig.h @@ -66,6 +66,7 @@ #define FINSH_CMD_SIZE 80 #define FINSH_USING_MSH #define FINSH_USING_MSH_DEFAULT +#define FINSH_USING_MSH_ONLY #define FINSH_ARG_MAX 10 /* Device virtual file system */ @@ -83,6 +84,7 @@ /* POSIX layer and C standard library */ +#define RT_USING_LIBC /* Network */ @@ -144,12 +146,6 @@ /* samples: kernel and components samples */ -/* Privated Packages of RealThread */ - - -/* Network Utilities */ - - /* Hardware Drivers Config */ #define SOC_GD32VF103V diff --git "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\210\266\344\275\234\346\225\231\347\250\213.md" "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\210\266\344\275\234\346\225\231\347\250\213.md" index dd24c7476406974c5d2113066354966e9652332b..cb2b5cb0d7bdd07e40352d631ba2613bac5c532c 100644 --- "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\210\266\344\275\234\346\225\231\347\250\213.md" +++ "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\210\266\344\275\234\346\225\231\347\250\213.md" @@ -1,8 +1,9 @@ -# IMXRT 系列 BSP 制作教程 +# i.MX RT 系列 BSP 制作教程 -为了让广大开发者更好、更方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 IMXRT 系列的 BSP,推出了新的 BSP 框架。新的 BSP 框架在易用性、移植便利性、驱动完整性、代码规范性等方面都有较大提升,在新的 BSP 框架下进行开发,可以大大提高应用的开发效率。 +为了让广大开发者更好、更方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 i.MX RT 系列的 BSP,推出了新的 BSP 框架。新的 BSP 框架在易用性、移植便利性、驱动完整性、代码规范性等方面都有较大提升,在新的 BSP 框架下进行开发,可以大大提高应用的开发效率。 + +和 RT-Thread 以往提供的 i.MX RT 的 BSP 不同,新的框架将不会出现一个 BSP 通过 Env 配置来适配不同开发平台的情况。而是将这些不同的开发平台通过不同的 BSP 文件展示出来。这种方式不仅大大降低了代码的耦合性,减少了 BSP 的维护成本,而且让开发者可以更容易地找到自己需要的资源。 -和 RT-Thread 以往提供的 BSP 不同,在新的 BSP 文件夹中将不会包含固件库、外设驱动等可以被多个 BSP 引用的代码文件。而是将这些通用的文件统一存放在 Libraries 文件夹中,通过在特定 BSP 中引用这些文件的方式,来包含 BSP 中所需的库文件或者驱动文件。这种方式不仅大大提高了代码复用率,降低了 BSP 的维护成本,而且可以更方便地给开发者提供更丰富的驱动文件,让开发者可以更容易地找到自己需要的资源。 新的 BSP 框架还引入了 MCUXpresso Config Tools 工具,可以使用该工具来对引脚和时钟进行配置。MCUXpresso 工具提供了图形化的配置界面,这种图形化的配置方式对开发者来说更加直观,不仅可以让开发者灵活地配置 BSP 中使用的资源,并且可以让开发者对资源的使用情况一目了然。 @@ -18,19 +19,19 @@ BSP 框架结构如下图所示: ![BSP 框架图](./figures/frame.png) -IMXRT 系列的 BSP 由三部分组成,分别是官方 SDK、通用驱动和特定开发板 BSP,下面的表格以 1050 系列 BSP 为例介绍这三个部分: +i.MX RT 系列的 BSP 由三部分组成,分别是官方 SDK、通用驱动和特定开发板 BSP,下面的表格以 1050 系列 BSP 为例介绍这三个部分: | 项目 | 文件夹 | 说明 | | - | - | :-- | | 官方 SDK | imxrt/libraries/MIMXRT1050 | 1050 系列官方 SDK | -| drivers | imxrt/libraries/drivers | IMXRT 系列通用 RTT 驱动 | +| drivers | imxrt/libraries/drivers | i.MX RT 系列通用 RTT 驱动 | | 特定开发板 BSP | imxrt/imxrt1052-nxp-evk | NXP 官方 imxrt1050 EVK 开发板 BSP | ## 2. 知识准备 制作一个 BSP 的过程就是构建一个新系统的过程,因此想要制作出好用的 BSP,要对 RT-Thread 系统的构建过程有一定了解,需要的知识准备如下所示: -- 掌握 imxrt 系列 BSP 的使用方法 +- 掌握 i.MX RT 系列 BSP 的使用方法 了解 BSP 的使用方法,可以阅读 [BSP 说明文档](../README.md) 中使用教程表格内的文档。了解外设驱动的添加方法可以参考《外设驱动添加指南》。 @@ -48,7 +49,7 @@ IMXRT 系列的 BSP 由三部分组成,分别是官方 SDK、通用驱动和 - 熟悉 MCUXpresso 工具的使用 - 在新的 imxrt 系列 BSP 中利用了 MCUXpresso 工具对底层硬件进行配置,因此需要了解 MCUXpresso 工具的使用方法。 + 在新的 i.MX RT 系列 BSP 中利用了 MCUXpresso 工具对底层硬件进行配置,因此需要了解 MCUXpresso 工具的使用方法。 ## 3. BSP 制作方法 @@ -127,7 +128,7 @@ BSP 的制作过程分为如下五个步骤: | 宏定义 | 意义 | 格式 | | ------------------ | -------- | ------------------ | | SOC_MIMXRT1052CVL5B | BSP 芯片型号 | SOC_MIMXRT10xxx | -| SOC_IMXRT1050_SERIES | BSP 芯片系列 | SOC_IMXRT10xx_SERIES,IMXRT 目前包括1015、1020、1050、1060及1064系列 | +| SOC_IMXRT1050_SERIES | BSP 芯片系列 | SOC_IMXRT10xx_SERIES,i.MX RT 目前包括1015、1020、1050、1060及1064系列 | 关于 BSP 上的外设支持选项,一个初次提交的 BSP 仅仅需要支持 GPIO 驱动和串口驱动即可,因此在配置选项中只需保留这两个驱动配置项,如下图所示: @@ -215,11 +216,11 @@ BSP 的制作过程分为如下五个步骤: ## 4. 规范 -本章节介绍 RT-Thread IMXRT 系列 BSP 制作与提交时应当遵守的规范 。开发人员在 BSP 制作完成后,可以根据本规范提出的检查点对制作的 BSP 进行检查,确保 BSP 在提交前有较高的质量 。 +本章节介绍 RT-Thread i.MX RT 系列 BSP 制作与提交时应当遵守的规范 。开发人员在 BSP 制作完成后,可以根据本规范提出的检查点对制作的 BSP 进行检查,确保 BSP 在提交前有较高的质量 。 ### 1. BSP 制作规范 -IMXRT BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和 IDE 配置。在已有的 IMXRT 系列 BSP 的模板中,已经根据下列规范对模板进行配置。在制作新 BSP 的过程中,拷贝模板进行修改时,需要注意的是不要修改这些默认的配置。BSP 制作完成后,需要对新制作的 BSP 进行功能测试,功能正常后再进行代码提交。 +i.MX RT BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和 IDE 配置。在已有的 i.MX RT 系列 BSP 的模板中,已经根据下列规范对模板进行配置。在制作新 BSP 的过程中,拷贝模板进行修改时,需要注意的是不要修改这些默认的配置。BSP 制作完成后,需要对新制作的 BSP 进行功能测试,功能正常后再进行代码提交。 下面将详细介绍 BSP 的制作规范。 @@ -227,7 +228,7 @@ IMXRT BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和 - 遵从 RT-Thread 编码规范,代码注释风格统一 - main 函数功能保持一致 - - 如果有 LED 的话,main 函数里 ** 只放一个 ** LED 1HZ 闪烁的程序 + - 如果有 LED 的话,main 函数里只放一个 LED 1HZ 闪烁的程序 - 在 `rt_hw_board_init` 中需要完成堆的初始化:调用 `rt_system_heap_init` - 默认只初始化 GPIO 驱动和 FinSH 对应的串口驱动,不使用 DMA - 当使能板载外设驱动时,应做到不需要修改代码就能编译下载使用 @@ -253,11 +254,11 @@ IMXRT BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和 ### 2. BSP 提交规范 -- 提交前请认真修改 BSP 的 README.md 文件,README.md 文件的外设支持表单只填写 BSP 支持的外设,可参考其他 BSP 填写。查看文档 [《IMXRT 系列驱动介绍》](./IMXRT 系列驱动介绍. md) 了解驱动分类。 +- 提交前请认真修改 BSP 的 README.md 文件,README.md 文件的外设支持表单只填写 BSP 支持的外设,可参考其他 BSP 填写。查看文档 [i.MX RT 系列驱动介绍》](./i.MX RT 系列驱动介绍. md) 了解驱动分类。 - 提交 BSP 分为 2 个阶段提交: - 第一阶段:基础 BSP 包括串口驱动和 GPIO 驱动,能运行 FinSH 控制台。完成 MDK4、MDK5 、IAR 和 GCC 编译器支持,如果芯片不支持某款编译器(比如 MDK4)可以不用做。 BSP 的 README.md 文件需要填写第二阶段要完成的驱动。 - 第二阶段:完成板载外设驱动支持,所有板载外设使用 menuconfig 配置后就能直接使用。若开发板没有板载外设,则此阶段可以不用完成。不同的驱动也要分开提交,方便 review 和合并。 - 只提交 BSP 必要的文件,删除无关的中间文件,能够提交的文件请对照其他 BSP。 -- 提交 IMXRT 不同系列的 Library 库时,请参考 1050 系列的 FSL 库。 +- 提交 i.MX RT 不同系列的 Library 库时,请参考 1050 系列的 FSL 库。 - 提交前要对 BSP 进行编译测试,确保在不同编译器下编译正常。 - 提交前要对 BSP 进行功能测试,确保 BSP 的在提交前符合工程配置章节中的要求。 \ No newline at end of file diff --git "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\244\226\350\256\276\351\251\261\345\212\250\344\275\277\347\224\250\346\225\231\347\250\213.md" "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\244\226\350\256\276\351\251\261\345\212\250\344\275\277\347\224\250\346\225\231\347\250\213.md" index b105a218869b08c54424c2acdfe3f1188f6b3cab..17b946410d109eb031097115f8864345948f2831 100644 --- "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\244\226\350\256\276\351\251\261\345\212\250\344\275\277\347\224\250\346\225\231\347\250\213.md" +++ "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227BSP\345\244\226\350\256\276\351\251\261\345\212\250\344\275\277\347\224\250\346\225\231\347\250\213.md" @@ -12,7 +12,7 @@ ## 前提要求 -- 学会如何使用 ENV 工具,参考:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-tool-manual/env/env-user-manual/) +- 学会如何使用 ENV 工具,参考:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/programming-manual/env/env/) ## 如何使用更多的板载资源 diff --git "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\345\244\226\350\256\276\351\251\261\345\212\250\346\267\273\345\212\240\346\214\207\345\215\227.md" "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\345\244\226\350\256\276\351\251\261\345\212\250\346\267\273\345\212\240\346\214\207\345\215\227.md" index f04245569b0d11a643c15bb07ba94596c48d518c..53cc9eeca8059bceae78a3f75f046192701e2d1e 100644 --- "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\345\244\226\350\256\276\351\251\261\345\212\250\346\267\273\345\212\240\346\214\207\345\215\227.md" +++ "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\345\244\226\350\256\276\351\251\261\345\212\250\346\267\273\345\212\240\346\214\207\345\215\227.md" @@ -1,12 +1,12 @@ -# IMXRT 系列外设驱动添加指南 +# i.MX RT 系列外设驱动添加指南 ## 1. 简介 -本文档是为需要给现有的 IMXRT BSP 添加更多外设驱动的开发者准备的。通过阅读本文,开发者可以按照自己的实际情况给现有 BSP 添加自己需要的驱动。 +本文档是为需要给现有的 i.MX RT BSP 添加更多外设驱动的开发者准备的。通过阅读本文,开发者可以按照自己的实际情况给现有 BSP 添加自己需要的驱动。 ## 2. 前提要求 -- 熟练使用 ENV 工具,参考:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-tool-manual/env/env-user-manual/) +- 熟练使用 ENV 工具,参考:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/programming-manual/env/env/) - 熟悉 Kconfig 语法 - 熟悉 MCUXpresso 工具 - 对 RT-Thread 设备驱动框架有一定了解 @@ -63,9 +63,9 @@ ## 4. 注意事项 -- 部分驱动如果没有适配 BSP 所属的 IMXRT 系列,请等待 RT-Thread 团队更新。 +- 部分驱动如果没有适配 BSP 所属的 i.MX RT 系列,请等待 RT-Thread 团队更新。 - - 驱动文件对 IMXRT 系列的支持情况可以查看 [IMXRT系列驱动介绍文档](./IMXRT系列驱动介绍.md)。 + - 驱动文件对 i.MX RT 系列的支持情况可以查看 [i.MX RT系列驱动介绍文档](./IMXRT系列驱动介绍.md)。 - 对于驱动文件或文档说明,有任何建议或者意见,欢迎反馈到 [RT_Thread GitHub](https://github.com/RT-Thread/rt-thread) 网站或 [RT-Thread 官方论坛](https://www.rt-thread.org/qa/forum.php)。 diff --git "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\351\251\261\345\212\250\344\273\213\347\273\215.md" "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\351\251\261\345\212\250\344\273\213\347\273\215.md" index 75559f3de437231c7be9589fce6e2f7b3439aab5..8a4c8e706ba6ec0a590ff2d5ce169cf8f40a9090 100644 --- "a/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\351\251\261\345\212\250\344\273\213\347\273\215.md" +++ "b/bsp/imxrt/docs/IMXRT\347\263\273\345\210\227\351\251\261\345\212\250\344\273\213\347\273\215.md" @@ -24,7 +24,7 @@ ## 2. 外设驱动的使用方法 -当前 RT-Thread 提供的驱动库已经支持 IMXRT 多个系列的 BSP。点击下表中的驱动名称,即可跳转到对应驱动框架的介绍文档。开发者可以通过阅读相关资料,了解如何在应用开发中通过设备驱动框架来使用这些外设驱动。 +当前 RT-Thread 提供的驱动库已经支持 i.MX RT 多个系列的 BSP。点击下表中的驱动名称,即可跳转到对应驱动框架的介绍文档。开发者可以通过阅读相关资料,了解如何在应用开发中通过设备驱动框架来使用这些外设驱动。 ### 2.1 片上外设 diff --git a/bsp/stm32/libraries/HAL_Drivers/config/l4/spi_config.h b/bsp/stm32/libraries/HAL_Drivers/config/l4/spi_config.h index 72f28404bdcacf5a76f73007888461d02522fcfe..d7518805b365164fd3f8ea0d62edecbd49ff0876 100644 --- a/bsp/stm32/libraries/HAL_Drivers/config/l4/spi_config.h +++ b/bsp/stm32/libraries/HAL_Drivers/config/l4/spi_config.h @@ -53,10 +53,10 @@ extern "C" { #ifdef BSP_USING_SPI2 #ifndef SPI2_BUS_CONFIG -#define SPI2_BUS_CONFIG \ - { \ - .Instance = SPI2, \ - .bus_name = "spi2", \ +#define SPI2_BUS_CONFIG \ + { \ + .Instance = SPI2, \ + .bus_name = "spi2", \ } #endif /* SPI2_BUS_CONFIG */ #endif /* BSP_USING_SPI2 */ @@ -86,21 +86,38 @@ extern "C" { #endif /* BSP_SPI2_RX_USING_DMA */ #ifdef BSP_USING_SPI3 -#define SPI3_BUS_CONFIG \ - { \ - .Instance = SPI3, \ - .bus_name = "spi3", \ - .dma_rx.dma_rcc = RCC_AHB1ENR_DMA2EN, \ - .dma_tx.dma_rcc = RCC_AHB1ENR_DMA2EN, \ - .dma_rx.Instance = DMA2_Channel1, \ - .dma_rx.request = DMA_REQUEST_3, \ - .dma_rx.dma_irq = DMA2_Channel1_IRQn, \ - .dma_tx.Instance = DMA2_Channel2, \ - .dma_tx.request = DMA_REQUEST_3, \ - .dma_tx.dma_irq = DMA2_Channel2_IRQn, \ +#ifndef SPI3_BUS_CONFIG +#define SPI3_BUS_CONFIG \ + { \ + .Instance = SPI3, \ + .bus_name = "spi3", \ } +#endif /* SPI3_BUS_CONFIG */ +#endif /* BSP_USING_SPI3 */ -#endif +#ifdef BSP_SPI3_TX_USING_DMA +#ifndef SPI3_TX_DMA_CONFIG +#define SPI3_TX_DMA_CONFIG \ + { \ + .dma_rcc = SPI3_TX_DMA_RCC, \ + .Instance = SPI3_TX_DMA_INSTANCE, \ + .request = SPI3_TX_DMA_REQUEST, \ + .dma_irq = SPI3_TX_DMA_IRQ, \ + } +#endif /* SPI3_TX_DMA_CONFIG */ +#endif /* BSP_SPI3_TX_USING_DMA */ + +#ifdef BSP_SPI3_RX_USING_DMA +#ifndef SPI3_RX_DMA_CONFIG +#define SPI3_RX_DMA_CONFIG \ + { \ + .dma_rcc = SPI3_RX_DMA_RCC, \ + .Instance = SPI3_RX_DMA_INSTANCE, \ + .request = SPI3_RX_DMA_REQUEST, \ + .dma_irq = SPI3_RX_DMA_IRQ, \ + } +#endif /* SPI3_RX_DMA_CONFIG */ +#endif /* BSP_SPI3_RX_USING_DMA */ #ifdef __cplusplus } diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_can.c b/bsp/stm32/libraries/HAL_Drivers/drv_can.c index d0221b962312779086db89c118cc38328fc04ffb..ec78c2ef5cae117a00c04b0064fcbf91dc5d14dc 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_can.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_can.c @@ -377,8 +377,6 @@ static int _can_sendmsg(struct rt_can_device *can, const void *buf, rt_uint32_t HAL_CAN_StateTypeDef state = hcan->State; /* Check the parameters */ - RT_ASSERT(IS_CAN_IDTYPE(pmsg->ide)); - RT_ASSERT(IS_CAN_RTR(pmsg->rtr)); RT_ASSERT(IS_CAN_DLC(pmsg->len)); if ((state == HAL_CAN_STATE_READY) || @@ -515,7 +513,16 @@ static int _can_recvmsg(struct rt_can_device *can, void *buf, rt_uint32_t fifo) /* get len */ pmsg->len = rxheader.DLC; /* get hdr */ - pmsg->hdr = rxheader.FilterMatchIndex; + if (hcan->Instance == CAN1) + { + pmsg->hdr = (rxheader.FilterMatchIndex + 1) >> 1; + } +#ifdef CAN2 + else if (hcan->Instance == CAN2) + { + pmsg->hdr = (rxheader.FilterMatchIndex >> 1) + 14; + } +#endif return RT_EOK; } diff --git a/bsp/stm32/stm32f103-dofly-M3S/.cproject b/bsp/stm32/stm32f103-dofly-M3S/.cproject index 87ab6e1e3d693195f146125edbae5af949e2531a..0a7b7602a02a60a641ff6e5287c81a88170817b5 100644 --- a/bsp/stm32/stm32f103-dofly-M3S/.cproject +++ b/bsp/stm32/stm32f103-dofly-M3S/.cproject @@ -79,6 +79,7 @@