0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在STM32F407VGT6上使用serialX的步骤

冬至子 来源:阿富汗老嬴政 作者:阿富汗老嬴政 2023-08-24 17:49 次阅读

RT-Thread Studio版本: 2.2.5,RT-Thread v4.1.0 ,

新建RTthread STM32F407VGT6项目。打开CUBEMAX配置调试口,外部时钟,串口1(控制台),串口3,串口开启中断,生成代码。
删除掉原来的serial.c; serial.h; serialV2.c; serialV2.h;
drv_uart.c; drv_uart.h; drv_uart_V2.c; drv_uart_V2.h;
并使用serialX.c; serialX.h; drv_usartX.c; drv_usartX.h 替换
修改/rt-thread[4.1.0]/components/drivers路径下的Kconfig文件,找到if RT_USING_SERIAL修改一段代码,使setting页面可以配置serialX。

if RT_USING_SERIAL
choice
prompt "Choice Serial version"
default RT_USING_SERIAL_X
config RT_USING_SERIAL_X
bool "RT_USING_SERIAL_X"
endchoice
config RT_SERIAL_USING_DMA
bool "Enable serial DMA mode"
default n
endif

4.修改/rt-thread[4.1.0]/components/drivers/serial 文件夹下的SConscript文件代码,以使用serialX.c文件

from building import *
cwd = GetCurrentDir()
CPPPATH = [cwd + '/../include']
group = []
if GetDepend(['RT_USING_SERIAL']):
if GetDepend(['RT_USING_SERIAL_X']):
src = Glob('serialX.c')
group = DefineGroup('DeviceDrivers', src, depend = ['RT_USING_SERIAL_X'], CPPPATH = CPPPATH)
Return('group')

5.找到rt_device.h文件的SERIAL部分,修改代码,使之可以包含serialX.h 文件。

#ifdef RT_USING_SERIAL
#ifdef RT_USING_SERIAL_X
#include "drivers/serialX.h"
#endif
#endif /* RT_USING_SERIAL */

6.打开uart_config.h文件,找到#define UART1_CONFIG部分删除掉结构体中.tx_pin_name和 .rx_pin_name成员。而且后续使用哪个串口就必须修改相对应的结构体宏定义。

7.打开drv_usartX.c文件,按需求增加自己所需要的串口代码
比如用到串口3中断,不使用DMA, 则需要添加串口3 中断函数。

#if defined(BSP_USING_UART3)
void USART3_IRQHandler(void)
{
/* enter interrupt /
rt_interrupt_enter();
uart_isr(&(uart_obj[UART3_INDEX].serial));
/
leave interrupt /
rt_interrupt_leave();
}
#endif /
BSP_USING_UART3 */
8.找到drv_common.c文件的串口部分,修改代码

#ifdef RT_USING_SERIAL
#ifdef RT_USING_SERIAL_X
#include "drv_usartX.h"
#endif /* RT_USING_SERIAL /
#endif /
RT_USING_SERIAL_X */

9.使用下载来的文件替换掉rtdef.h文件,并且将新的文件中rt_mutex结构体定义中的value成员的注释关掉

10.打开components.c文件,修改rit_end函数
这里必须修改,否则控制台shell线程不会自启动

static int rti_end(void)
{
return 0;
}
INIT_EXPORT(rti_end, "7.end");

11.如果关于serialX的相关文件已经按以上步骤修改了,但是依找不到文件,可以尝试在setting中更新配置(比如开关串口DMA选项)。

board.h中添加

#define BSP_USING_UART1
#define BSP_USING_UART3
main函数中打开串口

rt_device_open(u3_dev, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_INT_TX | RT_DEVICE_OFLAG_NONBLOCKING);

完成!

1.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dma
    dma
    +关注

    关注

    3

    文章

    561

    浏览量

    100587
  • UART接口
    +关注

    关注

    0

    文章

    124

    浏览量

    15294
  • 串口中断
    +关注

    关注

    0

    文章

    64

    浏览量

    13898
  • RT-Thread
    +关注

    关注

    31

    文章

    1289

    浏览量

    40134
  • STM32F407VGT6
    +关注

    关注

    0

    文章

    3

    浏览量

    4201
收藏 人收藏

    评论

    相关推荐

    STM32F407VGT6刷了一次程序,再刷的时候不成功,为什么?

    STM32F407VGT6刷了一次程序,再刷的时候不成功 帮我看看什么原因,谢谢大佬了
    发表于 03-29 06:55

    程序下载到STM32F407VGT6不能运行的原因?

    程序STM32F407ZE可行,下载到STM32F407VGT6不能运行 有没有懂的,求指教
    发表于 05-31 06:22

    STM32单片机开发板 STM32F407VGT6核心板 100脚带以太网核心板

    STM32F407VGT6核心板,,带以太网功能, I/O全引出100mil以太网PHY:DP83848汉仁RJ45:HR911105A均送调通的ST LWIP范例。Description
    发表于 09-14 10:43

    STM32F407VGT6核心板 STM32F4单片机开发板 提供图纸及例程

    JTAG口仿真下载程序。 特点:MCU: STM32F407VGT6 (100脚)最大工作频率:168M1MB Flash and 192+4KB RAM板25M 晶振TXD, RXD, GND焊盘一个
    发表于 09-16 11:53

    请问STM32F407VGT6的keil也配置过了,编译也没错,灯不亮的原因是什么?

    本帖最后由 一只耳朵怪 于 2018-6-11 11:54 编辑 为什么下载到板子里没问题,但是就是灯不亮,而且说是not in debug mode,我的板子芯片是STM32F407VGT6,keil也配置过了,编译也没错,求大神帮帮我
    发表于 06-11 09:10

    STM32F407VGT6的485通信程序

    STM32F407VGT6的485通信程序【SP3485芯片&中断接收】.pdf
    发表于 07-04 03:52

    STM32F407VGT6用ISP和IAP方式都下载不进去

    最近新画了块板子,用的是STM32F407VGT6,用ISP和IAP方式都下载不进去,求助。1.我已经boot0=1(拉10K到3.3V),boot1=0(下拉10K到GND)。ISP下载
    发表于 03-14 06:25

    W5500STM32F407VGT6如何移植(成功)

    捣鼓成了。1.硬件信息: MCU:STM32F407VGT6 以太网芯片:W5500 接口:SPI2(STM32F407)下面是测试图片及源代码。STM32F407VGT6_w5500_tcp_client.rar (2.49
    发表于 05-29 09:15

    STM32F407VGT6型号的具体解释

    单片机型号:STM32F407VGT6本文档介绍STM32F407VGT6型号的具体解释,如下图所示。具体解释:STM32,gerneral purpose,以太网接口,100引脚,1024K Flash空间,LQFP封装,-4
    发表于 08-04 06:38

    关于STM32F407VGT6型号的具体解释

    STM32F407VGT6单片机有哪些基本参数?STM32F407VGT6单片机有哪些特性?
    发表于 10-20 06:20

    如何使用STM32F407VGT66路PWM输出通道来控制6个舵机的运动?

    如何使用STM32F407VGT66路PWM输出通道来控制6个舵机的运动?
    发表于 10-25 07:37

    新建一个基于STM32F407VGT6的RT-Thread项目编译出错如何解决

    照着B站官方视频,新建了一个基于芯片STM32F407VGT6的RT-Thread项目,但是编译之后出现五个错误。不知道咋解决。
    发表于 10-18 10:02

    浅析STM32F407VGT6项目使用serialX的流程

    RT-Thread Studio版本: 2.2.5,RT-Thread v4.1.0 ,新建RTthread STM32F407VGT6项目。打开CUBEMAX配置调试口,外部时钟,串口1(控制台
    发表于 11-30 11:03

    具有CAN总线通信的STM32F74G-DISCO和STM32f407VGT6无法正常工作如何解决?

    我有两块板:STM32F74G-DISCO 和 STM32f407VGT6 它们与 CAN 总线连接,但连接不工作。附件中的图片是我的架构。我认为我的代码没问题,但我不确定模式。我有两个收发器 MCP2551。如果需要,我也可以粘贴代码。
    发表于 02-06 07:07

    STM32开发笔记56: STM32F407VGT6的解释

    STM32开发笔记56: STM32F407VGT6的解释
    发表于 12-02 16:51 48次下载
    <b class='flag-5'>STM32</b>开发笔记56: <b class='flag-5'>STM32F407VGT6</b>的解释