0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在STM32F407VGT6上使用serialX的步驟

冬至子 ? 來源:阿富汗老嬴政 ? 作者:阿富汗老嬴政 ? 2023-08-24 17:49 ? 次閱讀

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

新建RTthread STM32F407VGT6項目。打開CUBEMAX配置調(diào)試口,外部時鐘,串口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部分刪除掉結(jié)構(gòu)體中.tx_pin_name和 .rx_pin_name成員。而且后續(xù)使用哪個串口就必須修改相對應(yīng)的結(jié)構(gòu)體宏定義。

7.打開drv_usartX.c文件,按需求增加自己所需要的串口代碼
比如用到串口3中斷,不使用DMA, 則需要添加串口3 中斷函數(shù)。

#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結(jié)構(gòu)體定義中的value成員的注釋關(guān)掉

10.打開components.c文件,修改rit_end函數(shù)
這里必須修改,否則控制臺shell線程不會自啟動

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

11.如果關(guān)于serialX的相關(guān)文件已經(jīng)按以上步驟修改了,但是依找不到文件,可以嘗試在setting中更新配置(比如開關(guān)串口DMA選項)。

board.h中添加

#define BSP_USING_UART1
#define BSP_USING_UART3
main函數(shù)中打開串口

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    552

    瀏覽量

    99935
  • UART接口
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    15199
  • 串口中斷
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    13798
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1239

    瀏覽量

    39437
  • STM32F407VGT6
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    4181
收藏 人收藏

    評論

    相關(guān)推薦

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

    STM32F407VGT6刷了一次程序,再刷的時候不成功 幫我看看什么原因,謝謝大佬了
    發(fā)表于 03-29 06:55

    程序下載到STM32F407VGT6不能運行的原因?

    程序STM32F407ZE可行,下載到STM32F407VGT6不能運行 有沒有懂的,求指教
    發(fā)表于 05-31 06:22

    STM32單片機開發(fā)板 STM32F407VGT6核心板 100腳帶以太網(wǎng)核心板

    STM32F407VGT6核心板,,帶以太網(wǎng)功能, I/O全引出100mil以太網(wǎng)PHY:DP83848漢仁RJ45:HR911105A均送調(diào)通的ST LWIP范例。Description
    發(fā)表于 09-14 10:43

    STM32F407VGT6核心板 STM32F4單片機開發(fā)板 提供圖紙及例程

    JTAG口仿真下載程序。 特點:MCU: STM32F407VGT6 (100腳)最大工作頻率:168M1MB Flash and 192+4KB RAM板25M 晶振TXD, RXD, GND焊盤一個
    發(fā)表于 09-16 11:53

    請問STM32F407VGT6的keil也配置過了,編譯也沒錯,燈不亮的原因是什么?

    本帖最后由 一只耳朵怪 于 2018-6-11 11:54 編輯 為什么下載到板子里沒問題,但是就是燈不亮,而且說是not in debug mode,我的板子芯片是STM32F407VGT6,keil也配置過了,編譯也沒錯,求大神幫幫我
    發(fā)表于 06-11 09:10

    STM32F407VGT6的485通信程序

    STM32F407VGT6的485通信程序【SP3485芯片&中斷接收】.pdf
    發(fā)表于 07-04 03:52

    STM32F407VGT6用ISP和IAP方式都下載不進(jìn)去

    最近新畫了塊板子,用的是STM32F407VGT6,用ISP和IAP方式都下載不進(jìn)去,求助。1.我已經(jīng)boot0=1(拉10K到3.3V),boot1=0(下拉10K到GND)。ISP下載
    發(fā)表于 03-14 06:25

    W5500STM32F407VGT6如何移植(成功)

    搗鼓成了。1.硬件信息: MCU:STM32F407VGT6 以太網(wǎng)芯片:W5500 接口:SPI2(STM32F407)下面是測試圖片及源代碼。STM32F407VGT6_w5500_tcp_client.rar (2.49
    發(fā)表于 05-29 09:15

    STM32F407VGT6型號的具體解釋

    單片機型號:STM32F407VGT6本文檔介紹STM32F407VGT6型號的具體解釋,如下圖所示。具體解釋:STM32,gerneral purpose,以太網(wǎng)接口,100引腳,1024K Flash空間,LQFP封裝,-4
    發(fā)表于 08-04 06:38

    關(guān)于STM32F407VGT6型號的具體解釋

    STM32F407VGT6單片機有哪些基本參數(shù)?STM32F407VGT6單片機有哪些特性?
    發(fā)表于 10-20 06:20

    如何使用STM32F407VGT66路PWM輸出通道來控制6個舵機的運動?

    如何使用STM32F407VGT66路PWM輸出通道來控制6個舵機的運動?
    發(fā)表于 10-25 07:37

    新建一個基于STM32F407VGT6的RT-Thread項目編譯出錯如何解決

    照著B站官方視頻,新建了一個基于芯片STM32F407VGT6的RT-Thread項目,但是編譯之后出現(xiàn)五個錯誤。不知道咋解決。
    發(fā)表于 10-18 10:02

    淺析STM32F407VGT6項目使用serialX的流程

    RT-Thread Studio版本: 2.2.5,RT-Thread v4.1.0 ,新建RTthread STM32F407VGT6項目。打開CUBEMAX配置調(diào)試口,外部時鐘,串口1(控制臺
    發(fā)表于 11-30 11:03

    具有CAN總線通信的STM32F74G-DISCO和STM32f407VGT6無法正常工作如何解決?

    我有兩塊板:STM32F74G-DISCO 和 STM32f407VGT6 它們與 CAN 總線連接,但連接不工作。附件中的圖片是我的架構(gòu)。我認(rèn)為我的代碼沒問題,但我不確定模式。我有兩個收發(fā)器 MCP2551。如果需要,我也可以粘貼代碼。
    發(fā)表于 02-06 07:07

    STM32開發(fā)筆記56: STM32F407VGT6的解釋

    STM32開發(fā)筆記56: STM32F407VGT6的解釋
    發(fā)表于 12-02 16:51 ?48次下載
    <b class='flag-5'>STM32</b>開發(fā)筆記56: <b class='flag-5'>STM32F407VGT6</b>的解釋