1.概述:

硬件资源:正点原子stmf7水星版、ATK-ESP8266的WiFi模块;

编译软件:MDK5;

操作系统:RT-Thread实时操作系统。

目标需求:利用uart1重定义实现printf输出调试打印信息;usart3连接ATK-ESP8266模块实现AT通讯;ESP8266模块通过MQTT协议连接阿里云物联网平台。

第二篇:STM32F767igt6 + RT-Thread + ESP8266

完结篇:STM32F767igt6 + RT-Thread + ESP8266

2.工程代码的移植创建:

2.1 RT-Thread代码下载:

RT-Thread官网代码下载地址,选择其中一种方式下载即可。熟悉env工具的使用。

2.2 开发板bsp制作:

BSP官方制作教程,这里废话不多说,根据自己的开发板硬件资源按照教程步骤配置即可,最后即可生成MDK5工程。

3.工程代码编译:

编译刚生成的MDK5工程代码,如果配置正确的话,是无报错的。

接下来,在工程目录上创建一个uart.c文件编写串口逻辑代码。

添加如下段代码,重定义fputc,这里我是uart1做打印口输出,根据实际配置。

#if 1
#pragma import(__use_no_semihosting)             struct __FILE
{ int handle;
}; FILE __stdout;       void _sys_exit(int x)
{ x = x;
} int fputc(int ch, FILE *f)
{   while((USART1->ISR&0X40)==0);  USART1->TDR=(uint8_t)ch;      return ch;
}#endif

串口逻辑代码可以参考正点原子实现原理,这里不做具体说明,很简单的,不懂的百度正点原子教程观看理解。这里仅贴出代码

官方

void uart1_init(uint32_t bound)
{   //UART 初始化设置UART1_Handler.Instance=USART1;                     //USART1UART1_Handler.Init.BaudRate=bound;                 //波特率UART1_Handler.Init.WordLength=UART_WORDLENGTH_8B;   //字长为8位数据格式UART1_Handler.Init.StopBits=UART_STOPBITS_1;      //一个停止位UART1_Handler.Init.Parity=UART_PARITY_NONE;         //无奇偶校验位UART1_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;   //无硬件流控UART1_Handler.Init.Mode=UART_MODE_TX_RX;           //收发模式HAL_UART_Init(&UART1_Handler);                        //HAL_UART_Init()会使能UART1HAL_UART_Receive_IT(&UART1_Handler, (uint8_t *)aRxBuffer, RXBUFFERSIZE);//该函数会开启接收中断:标志位UART_IT_RXNE,并且设置接收缓冲以及接收缓冲接收最大数据量}void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{GPIO_InitTypeDef GPIO_Initure;if(huart->Instance==USART1){__HAL_RCC_GPIOA_CLK_ENABLE();           __HAL_RCC_USART1_CLK_ENABLE();          GPIO_Initure.Pin=GPIO_PIN_9;           GPIO_Initure.Mode=GPIO_MODE_AF_PP;     GPIO_Initure.Pull=GPIO_PULLUP;         GPIO_Initure.Speed=GPIO_SPEED_FAST;        GPIO_Initure.Alternate=GPIO_AF7_USART1;    HAL_GPIO_Init(GPIOA,&GPIO_Initure);    GPIO_Initure.Pin=GPIO_PIN_10;           HAL_GPIO_Init(GPIOA,&GPIO_Initure);         }
}void USART1_IRQHandler(void)
{ uint8_t Res;if((__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_RXNE)!=RESET)){HAL_UART_Receive(&UART1_Handler,&Res,1,1000); if((USART_RX_STA&0x8000)==0){if(USART_RX_STA&0x4000){if(Res!=0x0a)USART_RX_STA=0;else USART_RX_STA|=0x8000;}else{ if(Res==0x0d)USART_RX_STA|=0x4000;else{USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;USART_RX_STA++;if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;  }      }}          }HAL_UART_IRQHandler(&UART1_Handler);
} 

最后,在main函数中,调用初始化uart1,并循环打印“hello”。通过串口调试软件查看打印结果。

因为是带操作系统的,可以创建一个串口的专用线程实现,就不用把所有代码都编写在main里了。

 uart1_init(115200);while(1){printf("hello\r\n");rt_thread_mdelay(2000);}

说明:此文章仅做步骤记录,对于基本的知识点不做特别说明,可以自行查阅资料。

开篇:STM32F7 + RT-Thread + ESP8266相关推荐

  1. 关于RT thread系统节拍时钟的配置

    关于RT thread系统节拍时钟的配置                  -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...

  2. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  3. rt thread 使用FAL遇到fal_init() undefined reference

    rt thread FAL 0.5版,之前有没有不知道,遇到一个坑. 在main.cpp里面已经 #include <fal.h> fal_init() 编译报错,说 fal_init() ...

  4. RT Thread Free Modbus移植问题整理

    RT Thread Free Modbus移植问题整理 问题描述: 在读写寄存器中,写数据正常,只能读1个寄存器的值,多个值会异常. 在移植过程中发现串口(或RS485)数据接收长度异常. 一.环境描 ...

  5. Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32

    1.前言     [2014年4月重写该博文]     经过若干时间的努力终于搞定了STM32+LwIP和yeelink平台的数据互通,在学习的过程中大部分时间花在以太网协议栈学习上,但是在RT Th ...

  6. RT Thread根据开发板制作BSP方法

    之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...

  7. RT Thread之 Uart2 操作

    官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/uar ...

  8. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

  9. RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程

    (1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...

  10. rt thread系统下添加wiznet软件包后,不插网线CPU利用率100%问题

    rt thread系统下添加wiznet软件包后如果不插网线的话其他任务运行很卡,使用ps命令发现优先级低的任务很多都超时了 rt thread线程错误码 添加了一个可以查看CPU利用率的软件包CPU ...

最新文章

  1. mac下的intellij idea常用快捷键
  2. vue 自定义select下拉框样式(div模拟)
  3. 波形包络提取与峰值提取_研究提出从地震噪声提取微弱体波信号探测下地幔散射体的方法...
  4. ABAP Pattern usage - define own custom user exit
  5. 手把手教你用1行代码实现人脸识别 -- Python Face_recognition
  6. 足球预测_预测足球热
  7. 威纶触摸屏与电脑连接_PLC与这7种设备的连接方式,一看就懂!
  8. 目标检测第7步:如何在Windows 10下,配置Pycharm中的YOLOv5(5.0)虚拟环境?
  9. WAMPSERVER 启动后打开LOCALHOST是一张IIS7的图片的解决
  10. Solr管理索引库——(十三)
  11. spring mvc文件上传与下载
  12. 获取输入框内容,数值类型转换问题
  13. 数据的正态性检验汇总
  14. 河南高二计算机会考excel,(完整版)高中信息技术学业水平考试Word、Excel操作题考点总结...
  15. 比较大小教案计算机小朋友们,一年级数学下册第单元教案.doc
  16. 大数据之电信项目架构
  17. 分支-07. 比较大小(10)
  18. 改变水平线hr的颜色
  19. 简单的酒店住房退房管理系统
  20. 【MFC】使用TabControl创建Tab分页

热门文章

  1. MT8516处理器性能介绍,MTK芯片资料分享
  2. The Most Common Habits from more than 200 English Papers written by Graduate Chinese Students
  3. 分布式开发--分布式定时任务
  4. 2D弹簧质点系统的隐式求解
  5. SSM前后端分离技术
  6. 基站侧与核心网侧进行交互涉及PLMN和PLMN ID换算及其代码实现
  7. CodeGear Delphi2009 个人体验一
  8. 移动端切图内容包括什么_手机移动端前端开发切图的一些疑问
  9. python指纹识别_python安全编程之指纹识别
  10. 关于flv转成mp4的方法