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

网站维护要求wordpress注册增加性别选项

网站维护要求,wordpress注册增加性别选项,大庆建设中等职业技术学校网站,广东省建设交易中心网站首页文章目录第一步:获取RT-Thread源码第二步:项目结构介绍第三步:拷贝示例代码到裸机工程第四步:删除无用文件第五步:修改工程目录结构第六步:添加工程文件路径第七步:编译第八步:修改配…

文章目录

      • 第一步:获取RT-Thread源码
      • 第二步:项目结构介绍
      • 第三步:拷贝示例代码到裸机工程
      • 第四步:删除无用文件
      • 第五步:修改工程目录结构
      • 第六步:添加工程文件路径
      • 第七步:编译
      • 第八步:修改配置文件
      • 第九步:编写测试程序
      • 第十步:重映射串口到rt_kprintf函数

第一步:获取RT-Thread源码

首先到rtthread官网下载rt-thread nano后解压

解压后打开后内容如下

image-20230220122328045

第二步:项目结构介绍

各文件夹的作用如下:

image-20230220154416566

第三步:拷贝示例代码到裸机工程

拷贝一份到Keil工程的工程根目录下,示例工程采用野火STM32F407霸天虎的使用固件库点亮LED灯的代码,示例代码可以去野火官网下载。

image-20230220155003917

第四步:删除无用文件

image-20230220155342542

  • bsp里面存放了不同板子的示例,我们只需要保留board.crtconfig.h这两个配置文件即可,其他的均可删除image-20230220154656677

  • 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

image-20230220123503429

第六步:添加工程文件路径

image-20230220162220577

第七步:编译

编译后发现没有RTE_Components.h这个文件,头文件 RTE_Components.h是在 MDK中添加 RT-Thead Package 时由 MDK 自动生成的,目前我们没有使用 MDK 中自带的 RT-Thread 的 Package,所以这个头文件不存在,如果包含了该头文件,编译的时候会报错,需要修改 rtconfig.h 头文件,将相关代码注释掉。

image-20230220162343073

打开rtconfig.h找到#include "RTE_Components.h"将其注释

image-20230220162617400

之后再编译一次

image-20230220162733983

这时候错误就剩下了三个了,提示是有三个中断函数重复定义了。这时因为RT-Thread系统把这三个中断函数已经实现了,但是在stm32f10x_it.c这个文件中,也有这个三个中断函数,但是函数内是空的,没有实现。需要将 stm32f4xx_it.c 文件中的这个三个中断函数注释掉。
image-20230220163009173

image-20230220163049844

再编译一次,没有问题了

image-20230220163133486

第八步:修改配置文件

board.crtconfig.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同理

注释或者删除和时钟相关的宏定义和时钟配置函数

image-20230220164149557

屏蔽掉rt_hw_board_init()函数中的 SystemCoreClockUpdate(); 和 _SysTick_Config( SystemCoreClock / RT_TICK_PER_SECOND ); 函数调用。

重新添加时钟初始化语句 SysTick_Config( SystemCoreClock / RT_TICK_PER_SECOND );

将LED初始化代码从主函数中剪切到时钟初始化语句下面。
image-20230220164842169

第九步:编写测试程序

RT-Thread中习惯使用动态内存堆新建线程,因此在rt_config.h中取消掉#define RT_USING_HEAP的注释

image-20230220165159811

现在我们可以使用动态内存堆新建线程了

将下述代码拷贝到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()一样。要实现串口打印功能,首先需要给工程添加串口初始化相关代码,串口初始化和裸机中串口的使用是一模一样的。这里串口只需要使能接收功能,发送功能和发送中断可以不使用。

image-20230220192958022

rt_kprintf通过调用rt_hw_console_output来进行打印,而rt_hw_console_output函数在kerveice.c中是一个空函数,因此需要我们自行定义该函数实现打印功能。

image-20230220192845009

在board.c中定义rt_hw_console_output函数,在定义该函数之前需要配置usart,并且在board.h中进行usart的初始化。

image-20230220193441485

效果如下:

image-20230220194300856

工程模板下载链接:https://pan.baidu.com/s/1oukbNZEwU54zANl8-TOBzQ?pwd=ir17

参考:本文为CSDN博主「嵌入式@hxydj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_20222919/article/details/110956288

http://www.yayakq.cn/news/355095/

相关文章:

  • 做视频网站怎么备案广东省住房和城乡建设网站
  • 河南网站托管优化怎样做网站的外链
  • 石家庄市栾城区建设局网站手机如何制作一个网站
  • 重点项目建设网站做的网站怎么放视频
  • 企业网站建设哪家最好企业网站建站的专业性原则是指
  • 个人计算机做服务器建网站公司网站怎么规范管理的
  • 如何用凡科建设手机教学网站网站开发部经理招聘
  • 企业网站产品内页优化中国核工业二四建设有限公司实习安排在公司官方网站哪里看?
  • 免费找人网站 优帮云企业网站怎么做推广
  • 餐饮外哪个网站做推广网站建设管理
  • 网站开发超链接点击后变色建筑网片产品资料
  • 做信息图的网站有哪些大连网页制作wordpress
  • 芜湖做网站哪个公司好wordpress 如何使用模板
  • 商检报关网站建设大连网站开发公司
  • 优质的成都网站建设推敦煌网跨境电商平台
  • 超简单做网站软件番禺网站建设哪里好
  • pc端自适应网站模板惠州建设银行网站
  • 企业网站建设软件需求分析合肥网站建设求职简历
  • 做网站有关机械的图片建设电影网站的目的
  • 如何登陆公司网站后台怎么卸载电脑上wordpress
  • 无锡网站建.wordpress淘宝客模版
  • 安徽合肥建设银行招聘网站网站没有经过我司审核通过白名单
  • 有没有做任务能兑换现金的网站申请注册公司需要什么资料
  • 网站扒皮下载后怎么做做设计的网站商家入驻
  • 青岛科技街网站建设营销服务机构有哪些
  • 南通住房和城乡建设局网站做公司网站主要需要什么
  • asp.net网站开发百科上住房和城乡建设部网站
  • 做海报有什么好的网站推荐黄埔做网站要多少钱
  • 昆明市网站备案十大软件管理系统
  • 手游传奇新开服网站做网站创新互联