Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
keil_MDK
nano移植
RT-Thread Nano
PY32移植RT-Thread Nano记录
发布于 2023-06-04 23:13:43 浏览:1064
订阅该版
[tocm] #####
PY32移植RT-Thread Nano记录
过了许久稍微开始把原来画的饼一个一个填掉 这次简单的给PY32移植一下RT-Thread Nano 开发板:PY32F003_StartKit (PY32F003F16U Flash 32K SRAM 4K) IDE:MDK5 ##### 1.准备工作 这里bsp我直接使用厂商提供的bsp,原本想要直接选择芯片自己新建工程的,但是根据官方的教程一直没有成功于是就直接用现成的bsp了 ##### 下载:点击Pack installer ![image-20230604223234185.png](https://oss-club.rt-thread.org/uploads/20230604/5713a26617a1daf591193b1bbe4febaa.png.webp) 选择RT-Thread进行下载 ![4df796ee6a5a40c081a57bd40a18862.png](https://oss-club.rt-thread.org/uploads/20230604/057a76a2b52c722ebc253d059fa48fe7.png) Manage Rum-Time Environment,本次我们就只移植kernel,shell暂时我还用不上所以就先不移植了 ![1685889640484.png](https://oss-club.rt-thread.org/uploads/20230604/987cfaa255fc6589da6adb262526625b.png.webp) ##### 2.清除重定义 rt-thread在运行过程中会使用到HandFault_Handler和PendSV_Handler用于线程切换,异常处理,所以需要将py32f0xx_it.c中的这两个函数删除,否则链接时会提示重定义 还有mdk中main函数的入口函数`extern int $Super$$main(void);`原来是在system_py32f0xx.c中实现的,rtthread也进行了接管在启动流程中是如下流程 rt_application_init->main_thread_entry->$Super$$main(void),所以我们需要把`system_py32f0xx.c`中的删除 ##### 3.完成rt_hw_board_init ```C 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(); // 配置系统时钟 SystemCoreClockUpdate(); // 对系统时钟进行更新 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.修改内存堆 因为这个芯片sram很小所以我这里就给了2KB ```C #define RT_HEAP_SIZE (2*1024) static rt_uint8_t rt_heap[RT_HEAP_SIZE]; ``` ##### 5.愉快的点灯 ```c /** ****************************************************************************** * @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 应用程序入口函数. * @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 错误执行函数 * @param 无 * @retval 无 */ void APP_ErrorHandler(void) { /* 无限循环 */ while (1) { } } static void APP_LedConfig(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOB_CLK_ENABLE(); /* GPIOB时钟使能 */ 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 输出产生断言错误的源文件名及行号 * @param file:源文件名指针 * @param line:发生断言错误的行号 * @retval 无 */ void assert_failed(uint8_t *file, uint32_t line) { /* 用户可以根据需要添加自己的打印信息, 例如: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* 无限循环 */ while (1) { } } #endif /* USE_FULL_ASSERT */ /************************ (C) COPYRIGHT Puya *****END OF FILE******************/ ``` 结果:LED亮灭500ms ![4b082a647e277bf0176ef0e2e76852b.jpg](https://oss-club.rt-thread.org/uploads/20230604/e3c2ed602ae4b880c1b889666466aedd.jpg.webp)
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
goldengrandpa
这家伙很懒,什么也没写!
文章
11
回答
19
被采纳
2
关注TA
发私信
相关文章
1
求高手指点,RTThread下nanosleep()函数功能如何实现?在线等啊
2
RTT1.2.2在新塘Nano130KE3BN的移植中始终出现栈溢出的问题
3
官方能否出一个nano在mdk下移植finsh到stm32的教程
4
从裸机开始,创建一个RT-Thread Nano系统工程
5
Nano版如何启用shell
6
项目从RTT 2.x NANO移植到 RTT 3.x ENV 环境
7
nano 版本有没有集成到 IAR 中啊?
8
关于MDK5的RT-THREAD NANO中添加MSH组件的例程
9
rtt_nano版本,源代码在哪里下载啊?
10
RTT Nano 在keil 使用C++11 的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
20
个答案
2
次被采纳
张世争
11
个答案
2
次被采纳
rv666
9
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
6
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部