当前位置: 首页 > news >正文

网站 建设 维护 公司西安网站设计开发

网站 建设 维护 公司,西安网站设计开发,长沙制作公司宣传片哪家好,三河市建设局网站文章目录第一步#xff1a;获取RT-Thread源码第二步#xff1a;项目结构介绍第三步#xff1a;拷贝示例代码到裸机工程第四步#xff1a;删除无用文件第五步#xff1a;修改工程目录结构第六步#xff1a;添加工程文件路径第七步#xff1a;编译第八步#xff1a;修改配… 文章目录第一步获取RT-Thread源码第二步项目结构介绍第三步拷贝示例代码到裸机工程第四步删除无用文件第五步修改工程目录结构第六步添加工程文件路径第七步编译第八步修改配置文件第九步编写测试程序第十步重映射串口到rt_kprintf函数第一步获取RT-Thread源码 首先到rtthread官网下载rt-thread nano后解压 解压后打开后内容如下 第二步项目结构介绍 各文件夹的作用如下 第三步拷贝示例代码到裸机工程 拷贝一份到Keil工程的工程根目录下示例工程采用野火STM32F407霸天虎的使用固件库点亮LED灯的代码示例代码可以去野火官网下载。 第四步删除无用文件 bsp里面存放了不同板子的示例我们只需要保留board.c和rtconfig.h这两个配置文件即可其他的均可删除 docs存放了移植教程的地址可以删掉 libcpu里存放与处理器相关的接口文件因为本次是移植到STM32F407所以我们只需要保留libcpu/arm/cortex-m4这一个文件夹即可其他皆可删除。 将rt-thread目录下的bsp文件夹下的board.c和rtconfig.h移动到USER目录下USER存放供我们自行修改的一些文件。board.c和rtconfig.h是提供的配置文件 第五步修改工程目录结构 打开工程 打开工程项目管理 Manage Project Items 在Groups中选择USER,在右边Files中添加\rt-thread\rt-thread-3.1.3\bsp文件中的board.c文件 在Groups中选择USER,在右边Files中添加\rt-thread\rt-thread-3.1.3\bsp文件中的rtconfig.h文件 在Groups中选择新建新建rtt/source组,在右边Files中添加\rt-thread\rt-thread-3.1.3\src文件夹中的所有.c文件 在Groups中选择新建新建rtt/port组,在右边Files中添加rt-thread\rt-thread-3.1.3\libcpu\arm\cortex-m3文件夹下的context_rvds.S和cpuport.c文件 给工程添加头文件路径凡是文件夹中包含.h文件就需要将文件夹路径添加进去 ..\rt-thread\rt-thread-3.1.3\components\finsh..\rt-thread\rt-thread-3.1.3\include\libc..\rt-thread\rt-thread-3.1.3\include第六步添加工程文件路径 第七步编译 编译后发现没有RTE_Components.h这个文件头文件 RTE_Components.h是在 MDK中添加 RT-Thead Package 时由 MDK 自动生成的目前我们没有使用 MDK 中自带的 RT-Thread 的 Package所以这个头文件不存在如果包含了该头文件编译的时候会报错需要修改 rtconfig.h 头文件将相关代码注释掉。 打开rtconfig.h找到#include RTE_Components.h将其注释 之后再编译一次 这时候错误就剩下了三个了,提示是有三个中断函数重复定义了。这时因为RT-Thread系统把这三个中断函数已经实现了但是在stm32f10x_it.c这个文件中,也有这个三个中断函数但是函数内是空的没有实现。需要将 stm32f4xx_it.c 文件中的这个三个中断函数注释掉。 再编译一次没有问题了 第八步修改配置文件 board.c和rtconfig.h是两个配置文件。 在文件目录下新建一个board.h文件并添加到工程目录中添加如下代码 #ifndef __BOARD_H__ #define __BOARD_H__/* STM32 固件库头文件 */ #include stm32f4xx.h/* RT-Thread相关头文件 */ #include rthw.h #include rtthread.h/* 开发板硬件bsp头文件 */ #include ./led/bsp_led.h#endif /* __BOARD_H__ */以后所有需要添加进工程的头文件添加到board.h中即可。 在board.c中因为刚才把头文件都添加到board.h中了所以board.c中包含的头文件删除添加#include board.h即可main.c同理 注释或者删除和时钟相关的宏定义和时钟配置函数 屏蔽掉rt_hw_board_init()函数中的 SystemCoreClockUpdate(); 和 _SysTick_Config( SystemCoreClock / RT_TICK_PER_SECOND ); 函数调用。 重新添加时钟初始化语句 SysTick_Config( SystemCoreClock / RT_TICK_PER_SECOND ); 将LED初始化代码从主函数中剪切到时钟初始化语句下面。 第九步编写测试程序 RT-Thread中习惯使用动态内存堆新建线程因此在rt_config.h中取消掉#define RT_USING_HEAP的注释 现在我们可以使用动态内存堆新建线程了 将下述代码拷贝到main.c中编译下载可以看到红灯和绿灯交替闪烁系统移植成功。 #include board.h/* 声明线程1、2入口函数 */ static void led1_thread_entry(void *parameter); static void led2_thread_entry(void *parameter);/* 定义线程控制块 */ static rt_thread_t led1_thread RT_NULL; static rt_thread_t led2_thread RT_NULL;/*** brief 主函数* param 无* retval 无*/ int main(void) {/* 创建线程 */led1_thread rt_thread_create(led1,/* 线程名字 */led1_thread_entry, /* 线程入口函数 */ RT_NULL, /* 线程入口函数参数 */ 512, /* 线程栈大小 */ 3, /* 线程的优先级 */20); /* 线程时间片 */led2_thread rt_thread_create(led2,/* 线程名字 */led2_thread_entry, /* 线程入口函数 */ RT_NULL, /* 线程入口函数参数 */ 512, /* 线程栈大小 */ 3, /* 线程的优先级 */20); /* 线程时间片 *//* 启动线程 */if(led1_thread ! RT_NULL)rt_thread_startup(led1_thread);elsereturn -1;if(led2_thread ! RT_NULL)rt_thread_startup(led2_thread);elsereturn -1; } static void led1_thread_entry(void *parameter) {while(1){LED1_ON;rt_thread_delay(500);LED1_OFF;rt_thread_delay(500);} } static void led2_thread_entry(void *parameter) {while(1){LED2_OFF;rt_thread_delay(500);LED2_ON;rt_thread_delay(500);}} /*********************************************END OF FILE**********************/ 第十步重映射串口到rt_kprintf函数 在平时调试代码的时候经常需要用到串口的打印功能。RT-Thread提供了一个专用的打印函数rt_kprintf(),该函数在kservice.c中声明这个函数的功能和printf()一样。要实现串口打印功能首先需要给工程添加串口初始化相关代码串口初始化和裸机中串口的使用是一模一样的。这里串口只需要使能接收功能发送功能和发送中断可以不使用。 rt_kprintf通过调用rt_hw_console_output来进行打印而rt_hw_console_output函数在kerveice.c中是一个空函数因此需要我们自行定义该函数实现打印功能。 在board.c中定义rt_hw_console_output函数在定义该函数之前需要配置usart并且在board.h中进行usart的初始化。 效果如下 工程模板下载链接https://pan.baidu.com/s/1oukbNZEwU54zANl8-TOBzQ?pwdir17 参考本文为CSDN博主「嵌入式hxydj」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。 原文链接https://blog.csdn.net/qq_20222919/article/details/110956288
http://www.hkea.cn/news/14425553/

相关文章:

  • 网站2级目录怎么做的做网站如何把栏目放到首页
  • 安阳做网站的地方上海市建设执业注册中心网站
  • 手机创建个人网站 免费设计网页时有哪些配色方法
  • 超炫酷网站欣赏涞源县住房和城乡建设局网站
  • 站长之家排行榜北京住房与城乡建设网站
  • 类似酷家乐做庭院的网站项目负责人质量建设厅官方网站
  • html 图片展示网站ios 集成wordpress
  • vs做asp网站淘宝的电子商务网站的建设
  • 做网站后台应该谁来做石家庄网络推广优化
  • 山东高端网站建设wang莆田百度seo排名
  • 关于公司做网站供比价报告网站建设基础书本
  • 佛山招收网站设计免费开发平台网站
  • 网站建站哪家公司好一点什么是软件定制开发
  • 北京做网站建设公司wordpress代码学习
  • 一个虚拟空间可以放几个网站中国航天空间站最新消息
  • 盐城网站建设找哪家好WordPress下级
  • 西安优化seo班级优化大师官网登录
  • 西安大型网站开发大数据营销试卷
  • 南京网站建设要多少钱抖音电商
  • 湖北大网站建设免费搭建企业网站
  • 网站负责人核验现场拍摄照片电子件广州竞价外包
  • 上海网站建设官方网站2d游戏制作软件
  • seo优化工具使用教程东莞网站快速排名优化
  • 萍乡商城网站建设环保企业网站模板
  • 做网站每年需要多少维护费免费ai写作网站3000字
  • 电商网站统计怎么做学校网站建设先进事迹
  • 网站建设与维护报告总结做网站的收益在哪
  • 律师个人 网站做优化网站规划要点
  • 全国企业信用信息查询网站wordpress改为邮箱验证注册
  • 阿里云建站视频简约网站欣赏