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

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

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

PY32移植RT-Thread Nano記錄

冬至子 ? 來源:goldengrandpa ? 作者:goldengrandpa ? 2023-06-07 15:17 ? 次閱讀

這次簡單的給PY32移植一下RT-Thread Nano

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

IDE:MDK5

1.準(zhǔn)備工作

這里bsp我直接使用廠商提供的bsp,原本想要直接選擇芯片自己新建工程的,但是根據(jù)官方的教程一直沒有成功于是就直接用現(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)行過程中會(huì)使用到HandFault_Handler和PendSV_Handler用于線程切換,異常處理,所以需要將py32f0xx_it.c中的這兩個(gè)函數(shù)刪除,否則鏈接時(shí)會(huì)提示重定義

還有mdk中main函數(shù)的入口函數(shù)extern int Super$main(void);原來是在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(); // 對系統(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 無

@retval 無

*/

void APP_ErrorHandler(void)

{

/* 無限循環(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ò)誤的源文件名及行號

@param file:源文件名指針

@param line:發(fā)生斷言錯(cuò)誤的行號

@retval 無

*/

void assert_failed(uint8_t *file, uint32_t line)

{

/* 用戶可以根據(jù)需要添加自己的打印信息,

例如: printf("Wrong parameters value: file %s on line %d\\r\\n", file, line) */

/* 無限循環(huán) */

while (1)

{

}

}

#endif /* USE_FULL_ASSERT */

/** ********************** (C) COPYRIGHT Puya END OF FILE *************/

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

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

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107768
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1614

    瀏覽量

    147667
  • SRAM芯片
    +關(guān)注

    關(guān)注

    0

    文章

    65

    瀏覽量

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

    關(guān)注

    31

    文章

    1265

    瀏覽量

    39853
收藏 人收藏

    評論

    相關(guān)推薦

    移植RT-Thread nano到CW32L083

    移植RT-Thread Nano到CW32L083開發(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過程講解(上)

    RT-Thread 是國人自主研發(fā)的開源實(shí)時(shí)操作系統(tǒng)(RTOS),RT-Thread Nano 是極簡版的硬實(shí)時(shí)內(nèi)核,內(nèi)存占用小,移植簡單。VGLite 是 NXP 提供的輕量級 2D
    的頭像 發(fā)表于 11-09 11:20 ?2471次閱讀
    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>過程講解(上)

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

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

    基于 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,并說明生成代碼工程的步驟。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

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

    【國產(chǎn)MCU移植】HC32F460基于Keil MDK 移植 RT-Thread Nano
    發(fā)表于 11-18 18:51 ?65次下載
    【國產(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>

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

    如需下載相關(guān)開源資料請點(diǎn)擊閱讀原文這是一個(gè)航順 HK32F030 的 RT-Thread Nano 移植示例,記錄了在 Keil 裸機(jī)工程的基礎(chǔ)上進(jìn)行
    發(fā)表于 11-21 18:51 ?42次下載
    【國產(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)行講解。開發(fā)平臺:Keil MDK硬件平臺: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次下載

    【國產(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次下載
    【國產(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工程

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

    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記錄

    開發(fā)板:PY32F003_StartKit (PY32F003F16U Flash 32K SRAM 4K)
    的頭像 發(fā)表于 09-13 17:45 ?1117次閱讀
    <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>