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

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

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

PY32移植RT-Thread Nano記錄

冬至子 ? 來(lái)源:goldengrandpa ? 作者:goldengrandpa ? 2023-09-13 17:45 ? 次閱讀

這次簡(jiǎn)單的給PY32移植一下RT-Thread Nano

開(kāi)發(fā)板:PY32F003_StartKit (PY32F003F16U Flash 32K SRAM 4K)

IDE:MDK5

1.準(zhǔn)備工作

這里bsp我直接使用廠商提供的bsp,原本想要直接選擇芯片自己新建工程的,但是根據(jù)官方的教程一直沒(méi)有成功于是就直接用現(xiàn)成的bsp了

下載:點(diǎn)擊Pack installer

1.jpg

選擇RT-Thread進(jìn)行下載

1.jpg

Manage Rum-Time Environment,本次我們就只移植kernel,shell暫時(shí)我還用不上所以就先不移植了

1.jpg

2.清除重定義
rt-thread在運(yùn)行過(guò)程中會(huì)使用到HandFault_Handler和PendSV_Handler用于線程切換,異常處理,所以需要將py32f0xx_it.c中的這兩個(gè)函數(shù)刪除,否則鏈接時(shí)會(huì)提示重定義

還有mdk中main函數(shù)的入口函數(shù)extern int Super$main(void);原來(lái)是在system_py32f0xx.c中實(shí)現(xiàn)的,rtthread也進(jìn)行了接管在啟動(dòng)流程中是如下流程

rt_application_init->main_thread_entry->Super$main(void),所以我們需要把system_py32f0xx.c中的刪除

3.完成rt_hw_board_init
void rt_hw_board_init(void)
{
/*

  • TODO 1: OS Tick Configuration
  • Enable the hardware timer and call the rt_os_tick_callback function
  • periodically with the frequency RT_TICK_PER_SECOND.
    /
    /
    Call components board initial (use INIT_BOARD_EXPORT()) */
    HAL_Init();
    APP_SystemClockConfig(); // 配置系統(tǒng)時(shí)鐘
    SystemCoreClockUpdate(); // 對(duì)系統(tǒng)時(shí)鐘進(jìn)行更新
    SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
    #ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
    #endif
    #if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
    rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
    #endif
    }
    4.修改內(nèi)存堆
    因?yàn)檫@個(gè)芯片sram很小所以我這里就給了2KB

#define RT_HEAP_SIZE (2*1024)
static rt_uint8_t rt_heap[RT_HEAP_SIZE];
5.愉快的點(diǎn)燈
/**

@file main.c
@author MCU Application Team
@brief Main program body

@attention

? Copyright (c) Puya Semiconductor Co. All rights reserved.

? Copyright (c) 2016 STMicroelectronics. All rights reserved.

This software component is licensed by ST under BSD 3-Clause license,
the "License"; You may not use this file except in compliance with the
License. You may obtain a copy of the License at:

opensource.org/licenses/BSD-3-Clause

/
/
Includes ------------------------------------------------------------------/
#include "main.h"
#include
/
Private define ------------------------------------------------------------/
/
Private variables ---------------------------------------------------------/
/
Private user code ---------------------------------------------------------/
/
Private macro -------------------------------------------------------------/
/
Private function prototypes -----------------------------------------------*/
/**

@brief 應(yīng)用程序入口函數(shù).
@retval int
/
static void APP_LedConfig(void);
int main(void)
{
APP_LedConfig();
while (1)
{
rt_thread_delay(500);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
}
}
/
*
@brief 錯(cuò)誤執(zhí)行函數(shù)
@param 無(wú)
@retval 無(wú)
/
void APP_ErrorHandler(void)
{
/
無(wú)限循環(huán) /
while (1)
{
}
}
static void APP_LedConfig(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE(); /
GPIOB時(shí)鐘使能 /
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; /
推挽輸出 /
GPIO_InitStruct.Pull = GPIO_PULLUP; /
使能上拉 /
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; /
GPIO速度 /
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /
GPIO初始化 /
}
#ifdef USE_FULL_ASSERT
/
*
@brief 輸出產(chǎn)生斷言錯(cuò)誤的源文件名及行號(hào)
@param file:源文件名指針
@param line:發(fā)生斷言錯(cuò)誤的行號(hào)
@retval 無(wú)
/
void assert_failed(uint8_t file, uint32_t line)
{
/
用戶(hù)可以根據(jù)需要添加自己的打印信息,
例如: printf("Wrong parameters value: file %s on line %drn", file, line) /
/
無(wú)限循環(huán) /
while (1)
{
}
}
#endif /
USE_FULL_ASSERT /
/
********************** (C) COPYRIGHT Puya END OF FILE *************/

結(jié)果:LED亮滅500ms

1.jpg

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

    關(guān)注

    16

    文章

    1189

    瀏覽量

    51839
  • SRAM存儲(chǔ)器
    +關(guān)注

    關(guān)注

    0

    文章

    88

    瀏覽量

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

    關(guān)注

    31

    文章

    1261

    瀏覽量

    39840
  • 推挽輸出
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    6509
  • HAL庫(kù)
    +關(guān)注

    關(guān)注

    1

    文章

    114

    瀏覽量

    6145
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    移植RT-Thread nano到CW32L083

    移植RT-Thread Nano到CW32L083開(kāi)發(fā)板上,并成功運(yùn)行。
    的頭像 發(fā)表于 07-03 09:04 ?2.2w次閱讀
    <b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> <b class='flag-5'>nano</b>到CW32L083

    i.MX RT1170:VGLite移植RT-Thread Nano過(guò)程講解(上)

    RT-Thread 是國(guó)人自主研發(fā)的開(kāi)源實(shí)時(shí)操作系統(tǒng)(RTOS),RT-Thread Nano 是極簡(jiǎn)版的硬實(shí)時(shí)內(nèi)核,內(nèi)存占用小,移植簡(jiǎn)單。VGLite 是 NXP 提供的輕量級(jí) 2D
    的頭像 發(fā)表于 11-09 11:20 ?2459次閱讀
    i.MX <b class='flag-5'>RT</b>1170:VGLite<b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>過(guò)程講解(上)

    i.MX RT1170:VGLite移植RT-Thread Nano過(guò)程講解(下)

    上篇介紹了如何移植 RT-Thread Nano 內(nèi)核與 Finsh 控制臺(tái)到 RT1170。本篇繼續(xù)介紹如何將 NXP 官方的 VGLite API
    的頭像 發(fā)表于 11-09 11:22 ?860次閱讀

    基于 Keil MDK 移植 RT-Thread Nano

    基于 Keil MDK 移植 RT-Thread Nano 本文介紹如何基于 Keil MDK 移植 RT-Thread
    發(fā)表于 03-29 06:58

    如何基于CubeMX移植RT-Thread Nano?

    本文介紹了如何基于 CubeMX 移植 RT-Thread Nano,并說(shuō)明生成代碼工程的步驟。RT-Thread Nano 已集成在 Cu
    發(fā)表于 03-29 06:56

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個(gè) stm32f103 的基礎(chǔ)工程作為示例進(jìn)行講解。RT-Thread
    發(fā)表于 05-19 18:15

    【國(guó)產(chǎn)MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano

    【國(guó)產(chǎn)MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano
    發(fā)表于 11-18 18:51 ?65次下載
    【國(guó)產(chǎn)MCU<b class='flag-5'>移植</b>】HC32F460基于Keil MDK <b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    【國(guó)產(chǎn)MCU系列】在 HK32F030 上移植 RT-Thread Nano

    如需下載相關(guān)開(kāi)源資料請(qǐng)點(diǎn)擊閱讀原文這是一個(gè)航順 HK32F030 的 RT-Thread Nano 移植示例,記錄了在 Keil 裸機(jī)工程的基礎(chǔ)上進(jìn)行
    發(fā)表于 11-21 18:51 ?42次下載
    【國(guó)產(chǎn)MCU系列】在 HK32F030 上<b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    STM32 RT-Thread Nano(1)基于 Keil MDK 移植

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個(gè) stm32f103 的基礎(chǔ)工程作為示例進(jìn)行講解。開(kāi)發(fā)平臺(tái):Keil MDK硬件平臺(tái):XNUCLEO-F103RB
    發(fā)表于 12-02 16:06 ?13次下載
    STM32 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>(1)基于 Keil MDK <b class='flag-5'>移植</b>

    HC32F460移植RT-Thread Nano+FinSh工程源碼下載

    HC32F460移植RT-Thread Nano+FinSh工程源碼下載
    發(fā)表于 01-05 10:30 ?6次下載

    【國(guó)產(chǎn)MCU系列】在 HK32F030 上移植 RT-Thread Nano

    這是一個(gè)航順 HK32F030 的 RT-Thread Nano 移植示例,記錄了在 Keil 裸機(jī)工程的基礎(chǔ)上進(jìn)行 RT-Thread
    發(fā)表于 01-25 17:42 ?4次下載
    【國(guó)產(chǎn)MCU系列】在 HK32F030 上<b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個(gè) stm32f103 的基礎(chǔ)工程作為示例進(jìn)行講解。 RT-Thread
    發(fā)表于 01-26 17:04 ?16次下載
    基于 Keil MDK <b class='flag-5'>移植</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    如何創(chuàng)建RT-Thread Nano工程

    本文將嘗試使用國(guó)產(chǎn)的嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread,相比較于FreeRTOS,RT-Thread還是有很多有點(diǎn)的,比如有Fish命令行界面,國(guó)產(chǎn)開(kāi)源免費(fèi),Nano版本代碼量極小,移植
    的頭像 發(fā)表于 03-19 12:13 ?3722次閱讀

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與<b class='flag-5'>移植</b>

    PY32移植RT-Thread Nano記錄

    這里bsp我直接使用廠商提供的bsp,原本想要直接選擇芯片自己新建工程的,但是根據(jù)官方的教程一直沒(méi)有成功于是就直接用現(xiàn)成的bsp了
    的頭像 發(fā)表于 06-07 15:17 ?1681次閱讀
    <b class='flag-5'>PY32</b><b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b><b class='flag-5'>記錄</b>