程控版cubemx生成工程后的修改项
1.“rtdef.h” 在此文件第58行中包含以下文件typedefstructrt_driver*rt_driver_t;typedefstructrt_device*rt_device_t;#defineRT_USING_DEVICE#defineRT_USING_MUTEX#defineRT_USING_EVENT#defineRT_USING_SMALL_MEM#defineRT_USING_HEAP2.复制以下内容到 board.c 文件中/* * Copyright (c) 2006-2019, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-05-24 the first version */#includerthw.h#includertthread.h#includemain.h#ifdefined(RT_USING_USER_MAIN)defined(RT_USING_HEAP)/* * Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP * the RT_HEAP_SIZE max value (sram size - ZI size), 1024 means 1024 bytes */#defineRT_HEAP_SIZE(15*1024)staticrt_uint8_trt_heap[RT_HEAP_SIZE];RT_WEAKvoid*rt_heap_begin_get(void){returnrt_heap;}RT_WEAKvoid*rt_heap_end_get(void){returnrt_heapRT_HEAP_SIZE;}#endifvoidSysTick_Handler(void){rt_interrupt_enter();rt_tick_increase();rt_interrupt_leave();}#ifdefRT_USING_FINSH#includefinsh.hstaticvoidreboot(uint8_targc,char**argv){rt_hw_cpu_reset();}MSH_CMD_EXPORT(reboot,Reboot System);#endif/* RT_USING_FINSH *//** * This function will initial your board. */voidrt_hw_board_init(void){externvoidSystemClock_Config(void);HAL_Init();SystemClock_Config();SystemCoreClockUpdate();/* * 1: OS Tick Configuration * Enable the hardware timer and call the rt_os_tick_callback function * periodically with the frequency RT_TICK_PER_SECOND. */HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/RT_TICK_PER_SECOND);/* Call components board initial (use INIT_BOARD_EXPORT()) */#ifdefRT_USING_COMPONENTS_INITrt_components_board_init();#endif#ifdefined(RT_USING_USER_MAIN)defined(RT_USING_HEAP)rt_system_heap_init(rt_heap_begin_get(),rt_heap_end_get());#endif}#ifdefRT_USING_CONSOLEstaticUART_HandleTypeDef UartHandle;staticintuart_init(void){/* TODO: Please modify the UART port number according to your needs */UartHandle.InstanceUSART3;UartHandle.Init.BaudRate1000000;UartHandle.Init.WordLengthUART_WORDLENGTH_8B;UartHandle.Init.StopBitsUART_STOPBITS_1;UartHandle.Init.ParityUART_PARITY_NONE;UartHandle.Init.ModeUART_MODE_TX_RX;UartHandle.Init.HwFlowCtlUART_HWCONTROL_NONE;UartHandle.Init.OverSamplingUART_OVERSAMPLING_16;if(HAL_UART_Init(UartHandle)!HAL_OK){while(1);}return0;}INIT_BOARD_EXPORT(uart_init);voidrt_hw_console_output(constchar*str){rt_size_ti0,size0;chara\r;__HAL_UNLOCK(UartHandle);sizert_strlen(str);for(i0;isize;i){if(*(stri)\n){HAL_UART_Transmit(UartHandle,(uint8_t*)a,1,1);}HAL_UART_Transmit(UartHandle,(uint8_t*)(stri),1,1);}}#endif#ifdefRT_USING_FINSHcharrt_hw_console_getchar(void){/* Note: the initial value of ch must 0 */intch-1;if(__HAL_UART_GET_FLAG(UartHandle,UART_FLAG_RXNE)!RESET){chUartHandle.Instance-DR0xff;}else{rt_thread_mdelay(10);}returnch;}#endif3.复制以下内容到rtconfig.h//* RT-Thread config file */#ifndef__RTTHREAD_CFG_H__#define__RTTHREAD_CFG_H__// Use Configuration Wizard in Context Menu // hBasic Configuration// oMaximal level of thread priority 8-256// iDefault: 32#defineRT_THREAD_PRIORITY_MAX32// oOS tick per second// iDefault: 1000 (1ms)#defineRT_TICK_PER_SECOND1000// oAlignment size for CPU architecture data access// iDefault: 4#defineRT_ALIGN_SIZE4// othe max length of object name2-16// iDefault: 8#defineRT_NAME_MAX8// c1Using RT-Thread components initialization// iUsing RT-Thread components initialization#defineRT_USING_COMPONENTS_INIT// /c// c1Using user main// iUsing user main#defineRT_USING_USER_MAIN// /c// othe size of main thread1-4086// iDefault: 512#defineRT_MAIN_THREAD_STACK_SIZE1024// /h// hDebug Configuration// c1enable kernel debug configuration// iDefault: enable kernel debug configuration//#define RT_DEBUG// /c// oenable components initialization debug configuration0-1// iDefault: 0#defineRT_DEBUG_INIT0// c1thread stack over flow detect// i Diable Thread stack over flow detect//#define RT_USING_OVERFLOW_CHECK// /c// /h// hHook Configuration// c1using hook// iusing hook//#define RT_USING_HOOK// /c// c1using idle hook// iusing idle hook//#define RT_HOOK_USING_FUNC_PTR// /c// /h// hSoftware timers Configuration// c1 Enables user timers// i Enables user timers//#define RT_USING_TIMER_SOFT// /c// oThe priority level of timer thread 0-31// iDefault: 4#defineRT_TIMER_THREAD_PRIO4// oThe stack size of timer thread 0-8192// iDefault: 512#defineRT_TIMER_THREAD_STACK_SIZE512// /h// hIPC(Inter-process communication) Configuration// c1Using Semaphore// iUsing Semaphore#defineRT_USING_SEMAPHORE// /c// c1Using Mutex// iUsing Mutex//#define RT_USING_MUTEX// /c// c1Using Signal// iUsing Signal//#define RT_USING_SIGNALS// /c// c1Using Event// iUsing Event//#define RT_USING_EVENT// /c// c1Using MailBox// iUsing MailBox#defineRT_USING_MAILBOX// /c// c1Using Message Queue// iUsing Message Queue//#define RT_USING_MESSAGEQUEUE// /c// /h// hMemory Management Configuration// c1Using Mempool Management// iUsing Mempool Management//#define RT_USING_MEMPOOL// /c// c1Dynamic Heap Management// iDynamic Heap Management//#define RT_USING_HEAP// /c// c1using small memory// iusing small memory//#define RT_USING_SMALL_MEM// /c// c1Small Memory Algorithm// iSmall Memory Algorithm#defineRT_USING_SMALL_MEM_AS_HEAP// /c// /h// hConsole Configuration// c1Using console// iUsing console#defineRT_USING_CONSOLE// /c// othe buffer size of console 1-1024// ithe buffer size of console// iDefault: 128 (128Byte)#defineRT_CONSOLEBUF_SIZE128// /h// hEnable FinSH Configuration// c1include shell config// i Select this choice if you using FinSH#defineRT_USING_FINSH// /c// /h#ifdefined(RT_USING_FINSH)#includefinsh_config.h#endif// hDevice Configuration// c1using device framework// iusing device framework#defineRT_USING_DEVICE// /c// /h// end of configuration section #endif

相关新闻

高频面试题《二分查找》

高频面试题《二分查找》

在排序数组中查找元素的第一个和最后一个位置 题目描述 给定一个按照非递减顺序排列的整数数组 nums 和目标值 target,找出目标值在数组中的开始位置和结束位置。 如果数组中不存在 target,返回: [-1, -1]要求算法的时间复杂度为:…

2026/9/30 6:51:04 阅读更多 →
A311Y3 vs MT8883:AI边缘计算项目到底该怎么选?

A311Y3 vs MT8883:AI边缘计算项目到底该怎么选?

从NPU、视频、5G到应用场景,聊聊两款端侧AI平台的区别随着AI逐渐从云端走向设备端,AI盒子、机器人、智能终端、工业设备都开始需要更强的本地计算能力。做这类项目时,很多企业会遇到一个问题:A311Y3和MT8883,到底应该怎…

2026/9/30 6:50:04 阅读更多 →
Netty 4.2 使用与构建完全指南:系统要求、JPMS 模块化应用与源码构建实践

Netty 4.2 使用与构建完全指南:系统要求、JPMS 模块化应用与源码构建实践

后端通信网络异步编程 【免费下载链接】netty Netty project - an event-driven asynchronous network application framework 项目地址: https://gitcode.com/gh_mirrors/ne/netty 点击查看 免费下载 导读 Netty 是一个异步事件驱动的网络应用框架,用…

2026/9/30 6:50:04 阅读更多 →

最新新闻

系统参数配置实战:从内核参数到配置管理一次讲透

系统参数配置实战:从内核参数到配置管理一次讲透

1. 别把配置当杂活:先想清楚参数从哪里来 做运维和开发这些年,我最大的感受就是:系统参数配置这个事,看起来就是改几个数字、加几行配置,真正踩过坑的人才知道,它其实是整个系统稳定性的地基。很多线上事故…

2026/9/30 7:41:25 阅读更多 →
CSS Grid网格布局实战:从网格线到二维页面骨架的原理与避坑指南

CSS Grid网格布局实战:从网格线到二维页面骨架的原理与避坑指南

从table布局一路折腾到float、flex,我做前端这些年,布局方案换了一茬又一茬。第一次看到display: grid在页面上铺开一张规整的网格时,说实话有点恍惚——这就是我折腾了多少个通宵想要的东西。CSS Grid网格布局,现在大家习惯直接叫…

2026/9/30 7:41:25 阅读更多 →
纯CSS3实现双半圆进度条:从渐变到遮罩的完整实战

纯CSS3实现双半圆进度条:从渐变到遮罩的完整实战

1. 双半圆进度条到底是什么,为什么2026年还要拿它当考题 先给没做过这个组件的朋友描述一下画面:页面顶部是一块240像素宽的半圆盘,弧线从左侧9点钟方向起步,像转速表一样沿着上沿往右爬,爬到右侧3点钟方向就是100%。有…

2026/9/30 7:41:25 阅读更多 →
Redis内存管理:过期策略与淘汰策略全面解析及实战避坑

Redis内存管理:过期策略与淘汰策略全面解析及实战避坑

1. 先把两个策略的边界划清楚:一个管过期,一个管满员 很多人在刚接触Redis的时候,很容易把“过期策略”和“淘汰策略”搅在一起。面试时候被问到“Redis内存满了会怎么样”,经常有同学张口就说“把过期的key删掉”,这个…

2026/9/30 7:41:25 阅读更多 →
CSS网页布局实战手册:从文档流到Flex/Grid的完整指南

CSS网页布局实战手册:从文档流到Flex/Grid的完整指南

做前端这些年,被问得最多的永远是同一个问题——CSS 网页布局到底怎么学?明明浮动、定位、flex、grid 每条都背得下来,真拿到一张设计稿,还是不知道用什么、怎么排、为什么一刷新就错位。这篇文章我打算把布局这整条线从头捋一遍&…

2026/9/30 7:41:25 阅读更多 →
银河麒麟V10SP1重装怎么保住数据盘?UUID与fstab挂载全流程

银河麒麟V10SP1重装怎么保住数据盘?UUID与fstab挂载全流程

简介:银河麒麟桌面操作系统V10SP1重装教程,重点解决保留“数据盘”不丢失的难题。内容面向具备一定Linux操作基础的技术人员与高级用户,适用于需在系统升级或重装时保护个人数据的场景。文档以PDF形式提供,共1个文件,压…

2026/9/30 7:40:24 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →