日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

移植RT-Thread到靈動微MM32F5265開發(fā)板教程

安芯教育科技 ? 來源:極術社區(qū) ? 2025-03-17 10:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文轉載于極術社區(qū)

作者:曾是一顆薏米

前言

近期,筆者有幸獲得靈動微 MM32F5265 開發(fā)板的體驗資格。MM32F5260 搭載了 arm china "Star-MC1 內(nèi)核"處理器,擁有高性能,主打家電和工業(yè)等高可靠性應用領域。 總結一下,有以下亮點:

本土團隊打造,完全自主可控,采用全國產(chǎn)化供應鏈;

基于 Armv8-M 架構,帶有 L1 I-Cache & D-Cache,對比市面主流的 M3/M4,有 20%性能提升;

通過 I-Cache 實現(xiàn)對 flash 的零延遲訪問,擁有零延遲 AHB 總線矩陣,支持多并發(fā)總線;

擁有信號間互聯(lián)矩陣,可對多個事件進行邏輯組合,可實現(xiàn)較為復雜的功能;

移植

本次 rt-thread 的移植參考了 “Rice 我叫加飯?” 的博文:https://aijishu.com/a/1060000000347637 參考代碼: https://gitee.com/RiceChen0/mm32f5270_rtt(感謝原作者的付出) 這里我重點說一下不一樣的地方:

1.打印重定向到虛擬串口

雖然 Mini-F5265-OB 開發(fā)板上沒有板載 CH340,但這也不影響交互功能,官方提供了一種新的途徑:通過板載的 MM32-LINK-OB 的虛擬串口來實現(xiàn)串口的交互。 簡述實現(xiàn)的流程:

PC 通過 USB 連接板載的 MM32-LINK-OB;

板載的 MM32-LINK-OB 將 USB 數(shù)據(jù)轉發(fā)成 SWD 接口信號和串口的 tx/rx 信號;

最終信號達到 Mini-F5265-OB 開發(fā)板,實現(xiàn)串口的交互和程序的燒寫功能;

板載的 MM32-LINK-OB,連接如下圖所示:

33704220-faea-11ef-9310-92fbcf53809c.png

Mini-F5265-OB 開發(fā)板,連接如下圖所示:

33aad674-faea-11ef-9310-92fbcf53809c.png

因此,移植的第一步就是要用上虛擬串口。

通過查看上述的原理圖可知虛擬串口用到 uart3。

修改 drv_uart.h,添加 uart3 支持:

#if defined(BSP_USING_UART3)
#ifndef UART3_CONFIG
#define UART3_CONFIG                                
    {                                               
        .name           = "uart3",                  
        .rx_gpiox       = GPIOC,                    
        .rx_rcc_clock   = RCC_AHBPeriph_GPIOC,       
        .rx_pin         = GPIO_Pin_11,              
        .rx_gpio_af     = GPIO_AF_7,                
        .tx_gpiox       = GPIOB,                    
        .tx_rcc_clock   = RCC_AHBPeriph_GPIOC,      
        .tx_pin         = GPIO_Pin_10,              
        .tx_gpio_af     = GPIO_AF_7,                
        .uart_rcc_clock = RCC_APB1Periph_UART3,     
        .uartx          = UART3,                    
        .irq_type       = UART3_IRQn,               
    }
#endif /* UART3_CONFIG */
#endif /* BSP_USING_UART3 */

修改 drv_uart.c,uart3 使用的 PC10 和 PC11 需要初始化:

static int rt_hw_uart_gpio_init(struct mm32_uart_config *cfg)
{
    GPIO_InitTypeDef GPIO_InitStruct;


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART3, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);


    GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_7);
    GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_7);


    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_10;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High;
    GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOC, &GPIO_InitStruct);


    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_11;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOC, &GPIO_InitStruct);


    return RT_EOK;
}
修改 drv_uart.c,實現(xiàn) mm32_uart_ops(由于篇幅原因,這里僅截取關鍵部分)
static rt_err_t mm32_control(struct rt_serial_device *serial,
                            int                      cmd,
                            void                     *arg)
{
    struct mm32_uart *uart;
    rt_ubase_t ctrl_arg = (rt_ubase_t)arg;


    RT_ASSERT(serial != RT_NULL);


    uart = rt_container_of(serial, struct mm32_uart, serial);


    switch (cmd)
    {
        case RT_DEVICE_CTRL_SET_INT:
        {
            UART_ITConfig(uart->config->uartx, UART_IT_RX, ENABLE);
            NVIC_EnableIRQ(uart->config->irq_type);


            break;
        }
        case RT_DEVICE_CTRL_CLR_INT:
        {
            UART_ITConfig(uart->config->uartx, UART_IT_RX, DISABLE);
            NVIC_DisableIRQ(uart->config->irq_type);
            break;
        }


    }
    return 0;
}


static int mm32_putc(struct rt_serial_device *serial, char c)
{
    struct mm32_uart *uart;


    RT_ASSERT(serial != RT_NULL);


    uart = rt_container_of(serial, struct mm32_uart, serial);


    UART_SendData(uart->config->uartx, (uint8_t)(c));
    while (RESET == UART_GetFlagStatus(uart->config->uartx, UART_FLAG_TXC)) {};


    return 1;
}


static int mm32_getc(struct rt_serial_device *serial)
{
    struct mm32_uart *uart;
    int ch = -1;


    RT_ASSERT(serial != RT_NULL);


    uart = rt_container_of(serial, struct mm32_uart, serial);


    if(UART_GetFlagStatus(uart->config->uartx, UART_FLAG_RXAVL))
    {
        ch = UART_ReceiveData(uart->config->uartx);
        return ch;
    }


    return -1;
}


static void uart_isr(struct rt_serial_device *serial)
{
    struct mm32_uart *uart;


    RT_ASSERT(serial != RT_NULL);


    uart = rt_container_of(serial, struct mm32_uart, serial);


    if(SET == UART_GetFlagStatus(uart->config->uartx, UART_IT_RX))
    {
        rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
    }
}


void UART3_IRQHandler(void)
{
    rt_interrupt_enter();


    uart_isr(&(uart_obj[UART3_INDEX].serial));


    rt_interrupt_leave();
}

2.添加 hal 庫等文件

從官方的提供的例程資料中找到 HAL_Lib 文件夾,將里面的頭文件和源文件拷貝工程的 libraries/drivers 目錄里面。

修改 libraries/drivers 的 mm32f5260.h,定義“USE_STDPERIPH_DRIVER”的宏。(注意官方提供的默認沒有定義該宏,需要定義后才會編譯標準外設驅動庫)

在 libraries/drivers 目錄創(chuàng)建 hal_common.h,并在里面包含"hal_conf.h",目的是在外面可以調(diào)到 hal 層的函數(shù)接口。

將官方提供的 core_starmc1.h 拷貝到工程的 libraries/libraries/CMSIS/Include 目錄下,替換原來的 core_star.h。

將官方提供的 source 文件夾里面的文件整理到 libraries 和 mdk 目錄。

注:以上僅列出關鍵部分,其余詳見代碼倉庫。

3.實現(xiàn) systisk

跟以往不同的是:本次使用的 SDK 里面已經(jīng)實現(xiàn)了對系統(tǒng)時鐘的初始化(system_mm32f5260.c),我們僅需實現(xiàn) systisk 即可,代碼如下:

void SysTick_Init(void)
{
    uint32_t reload = 0;


    SysTick->CTRL &= (uint32_t)0xFFFFFFFB;


    reload = CLOCK_SYSTICK_FREQ/RT_TICK_PER_SECOND;
    reload--;


    SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;
    SysTick->LOAD = reload;
    SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}


void SysTick_Handler(void)
{
    /* enter interrupt */
    rt_interrupt_enter();


    rt_tick_increase();


    /* leave interrupt */
    rt_interrupt_leave();
}


void rt_hw_board_init()
{
    SysTick_Init();
    SystemClock_Config();


#if defined(RT_USING_HEAP)
    rt_system_heap_init(HEAP_BEGIN, (void *)HEAP_END);
#endif


#ifdef RT_USING_SERIAL
    extern int rt_hw_uart_init(void);
    rt_hw_uart_init();
#endif


#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
   rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif


#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif
}

移植效果

到此為止,基本上已經(jīng)完成了移植工作。

編譯,燒寫,可以到 rt-thread 的打?。?/p>

33ef86d4-faea-11ef-9310-92fbcf53809c.png

查看開發(fā)板可看到 LED2 隔 500ms 閃爍一次。

總結

本次移植過程修改的地方不多,主要是因為 SDK 變動而做的修改。在此,可以看到靈動微在維護 hal 庫做出的努力。畢竟 hal 層兼容性越強,可以吸收更多潛在用戶,節(jié)省用戶熟悉 SDK 的時間,這也是國產(chǎn)芯片替代的必經(jīng)之路。

最后,感謝靈動微和極術社區(qū)提供的平臺,也祝愿國產(chǎn)芯片越來越好。

倉庫代碼: https://gitee.com/sakura96888/mm32f5260_rtt

轉自 | 極術社區(qū)

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

    關注

    68

    文章

    20339

    瀏覽量

    255346
  • 移植
    +關注

    關注

    1

    文章

    417

    瀏覽量

    29541
  • 串口
    +關注

    關注

    15

    文章

    1627

    瀏覽量

    83398
  • 開發(fā)板
    +關注

    關注

    26

    文章

    6433

    瀏覽量

    121214
  • RT-Thread
    +關注

    關注

    32

    文章

    1644

    瀏覽量

    45272
  • 靈動微
    +關注

    關注

    5

    文章

    177

    瀏覽量

    23260
  • MM32
    +關注

    關注

    1

    文章

    108

    瀏覽量

    1431

原文標題:開發(fā)板測評|移植 RT-Thread 到 MM32F5265,含調(diào)通串口+LED

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RT-Thread 中設備樹的適配方法 | 技術集結

    本文基于RT-Thread現(xiàn)有的DM(設備模型)框架,以Rock2F開發(fā)板為例,系統(tǒng)梳理了RK3528SoC的快速移植流程,涵蓋了CLK、Pinctrl、ADC、NVMEM、Therm
    的頭像 發(fā)表于 04-04 18:05 ?3221次閱讀
    <b class='flag-5'>RT-Thread</b> 中設備樹的適配方法 | 技術集結

    極海APM32F427 MCU在RT-Thread系統(tǒng)上使用LwIP網(wǎng)絡功能

    下面是基于RT-Thread的ENV命令行開發(fā)環(huán)境,在APM32F427上使用LwIP網(wǎng)絡協(xié)議棧實現(xiàn)網(wǎng)絡通信功能的。
    的頭像 發(fā)表于 04-02 15:19 ?8851次閱讀
    極海APM32<b class='flag-5'>F</b>427 MCU在<b class='flag-5'>RT-Thread</b>系統(tǒng)上使用LwIP網(wǎng)絡功能

    RT-Thread 的靈魂伴侶 | 技術集結

    RT-Thread正式啟動硬件產(chǎn)品生態(tài)共建計劃"你有創(chuàng)意,我?guī)湍阃茝V",我們尋找那些藏在工作臺、實驗室和創(chuàng)客空間的嵌入式硬件創(chuàng)意——無論是一塊開發(fā)板、一個智能工具,還是一套完整的解決方案。
    的頭像 發(fā)表于 03-23 19:25 ?6729次閱讀
    <b class='flag-5'>RT-Thread</b> 的靈魂伴侶 | 技術集結

    恩智浦亮相RT-Thread 20周年開發(fā)者大會

    日前,“開源向實·生產(chǎn)力進化啟示錄”全球峰會暨RT-Thread 20周年開發(fā)者大會在上海成功舉辦,恩智浦作為RT-Thread的緊密合作伙伴,在活動中重磅亮相,展示雙方在共建RT-Threa
    的頭像 發(fā)表于 01-26 09:07 ?778次閱讀

    開發(fā)者的RT-Thread大會「實在」指南:技術、開發(fā)板與真誠的見面禮

    各位開發(fā)者感謝各位一直以來對RT-Thread社區(qū)的參與和支持,本周六我們將和大家一起迎來我們的20周年開發(fā)者大會。為了回饋一直以來與RT-Thread共同成長的
    的頭像 發(fā)表于 01-13 17:38 ?577次閱讀
    給<b class='flag-5'>開發(fā)</b>者的<b class='flag-5'>RT-Thread</b>大會「實在」指南:技術、<b class='flag-5'>開發(fā)板</b>與真誠的見面禮

    首搭RT-Thread程翧車控平臺| RT-Thread程翧 S32K344 快速原型開發(fā)平臺正式上市!| 產(chǎn)品動態(tài)

    在智能汽車邁向高集成與高安全的時代,VCU/ECU開發(fā)正面臨效率與可靠性的雙重考驗。依賴單一硬件或拼湊軟件方案的傳統(tǒng)模式,已成為制約創(chuàng)新的瓶頸。為此,RT-Thread帶來里程碑式的解決方案
    的頭像 發(fā)表于 10-31 11:53 ?1314次閱讀
    首搭<b class='flag-5'>RT-Thread</b>程翧車控平臺| <b class='flag-5'>RT-Thread</b>程翧 S32K344 快速原型<b class='flag-5'>開發(fā)</b>平臺正式上市!| 產(chǎn)品動態(tài)

    移植最新版的rt-thread nano時程序進入entry就報錯,為什么?

    我在移植最新版的rt-thread nano時發(fā)現(xiàn)程序只要一進去entry函數(shù)就直接跳到一個死循環(huán)里,我使用的編譯器是armgcc10.2版本。然而我移植舊版的rt-thread na
    發(fā)表于 10-09 07:17

    如何移植rt-thread野火imx6ull開發(fā)板上?

    求助如何將rt-thread移植野火imx6ull(coretex-A7)開發(fā)板上,官方的bsp中沒有imx6ull
    發(fā)表于 09-29 06:25

    2025年RT-Thread開發(fā)者巡回培訓報名正式啟動!

    親愛的RT-Thread社區(qū)成員們:新程再啟,共赴熱愛!2025年RT-Thread開發(fā)者巡回培訓正式啟動報名!今年,我們選擇了西安、武漢、北京、杭州、深圳、上海、成都這7座城市,為大家?guī)?/div>
    的頭像 發(fā)表于 09-27 10:39 ?2414次閱讀
    2025年<b class='flag-5'>RT-Thread</b><b class='flag-5'>開發(fā)</b>者巡回培訓報名正式啟動!

    使用RT-Thread studio 開發(fā)RT-Thread Nano項目的時候 串口的驅動是要自己寫嗎?

    剛入坑。使用RT-Thread studio 開發(fā)RT-Thread 標準項目的時候直接使用里邊的串口uart_dev=rt_device
    發(fā)表于 09-26 08:14

    RT-Thread生態(tài)再壯大!六大硬核新品,同步上線 | 產(chǎn)品動態(tài)

    六大好物上新!RT-Thread生態(tài)迎來重磅更新!從核心硬件強大工具,我們?yōu)槟鷾蕚淞?件全方位的開發(fā)利器:RT-ThreadART-PiII開發(fā)板
    的頭像 發(fā)表于 09-12 18:49 ?1556次閱讀
    <b class='flag-5'>RT-Thread</b>生態(tài)再壯大!六大硬核新品,同步上線 | 產(chǎn)品動態(tài)

    明晚!基于RT-Thread 的 PID 控制實踐,從驅動到算法監(jiān)控,一次學會!| 問學直播

    RT-Thread簡單PID控制實踐》精彩直播!本次直播將基于RT-Thread實時操作系統(tǒng)與NXPFRDM-MCXA156開發(fā)板,圍繞驅動配置、控制算法實現(xiàn)、遠
    的頭像 發(fā)表于 09-01 17:04 ?1473次閱讀
    明晚!基于<b class='flag-5'>RT-Thread</b> 的 PID 控制實踐,從驅動到算法<b class='flag-5'>到</b>監(jiān)控,一次學會!| 問學直播

    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植

    本篇還是以移植RT-Thread NanoMCUXpresso IDE為主,移植的代碼可以在nxpic.org.cn論壇搜索。
    的頭像 發(fā)表于 08-21 09:49 ?6980次閱讀
    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的<b class='flag-5'>RT-Thread</b> Nano<b class='flag-5'>移植</b>

    RT-Thread聯(lián)合瑞薩發(fā)起移植挑戰(zhàn)賽,邀您共創(chuàng)開源生態(tài)!| 社區(qū)活動

    為豐富嵌入式開源生態(tài),推動開源RT-ThreadRTOS在更多硬件平臺的落地應用,RT-Thread團隊攜手全球領先的半導體解決方案商瑞薩電子,正式啟動移植挑戰(zhàn)賽!本次活動將針對瑞薩8款主流MCU
    的頭像 發(fā)表于 08-08 10:36 ?1261次閱讀
    <b class='flag-5'>RT-Thread</b>聯(lián)合瑞薩發(fā)起<b class='flag-5'>移植</b>挑戰(zhàn)賽,邀您共創(chuàng)開源生態(tài)!| 社區(qū)活動

    開發(fā)板暢游網(wǎng)絡:RT-Thread CherryUSB 驅動 RNDIS 模塊詳解 | 技術集結

    本文通過在RT-Thread操作系統(tǒng)上,使用CherryUSB軟件包作為USBHost協(xié)議棧,驅動AIR780E4GCat.1模塊的RNDIS功能,并成功接入lwIP網(wǎng)絡協(xié)議棧,最終在開發(fā)板上實現(xiàn)了
    的頭像 發(fā)表于 07-02 17:04 ?3816次閱讀
    讓<b class='flag-5'>開發(fā)板</b>暢游網(wǎng)絡:<b class='flag-5'>RT-Thread</b> CherryUSB 驅動 RNDIS 模塊詳解 | 技術集結
    饶河县| 汕头市| 霍城县| 卢氏县| 绍兴县| 乐安县| 贡觉县| 独山县| 台中县| 广东省| 大名县| 沁源县| 陇川县| 五大连池市| 阿鲁科尔沁旗| 博湖县| 美姑县| 临海市| 剑川县| 闽侯县| 苍溪县| 封丘县| 阿城市| 元谋县| 久治县| 洞头县| 建水县| 桃园市| 咸阳市| 徐汇区| 信丰县| 淳安县| 郓城县| 大悟县| 昭平县| 烟台市| 凤台县| 南汇区| 高台县| 丹阳市| 湘西|