开篇:STM32F7 + RT-Thread + ESP8266
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相关推荐
- 关于RT thread系统节拍时钟的配置
关于RT thread系统节拍时钟的配置 -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...
- rt thread studio使用QBOOT和片外flash实现OTA升级
我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...
- rt thread 使用FAL遇到fal_init() undefined reference
rt thread FAL 0.5版,之前有没有不知道,遇到一个坑. 在main.cpp里面已经 #include <fal.h> fal_init() 编译报错,说 fal_init() ...
- RT Thread Free Modbus移植问题整理
RT Thread Free Modbus移植问题整理 问题描述: 在读写寄存器中,写数据正常,只能读1个寄存器的值,多个值会异常. 在移植过程中发现串口(或RS485)数据接收长度异常. 一.环境描 ...
- Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32
1.前言 [2014年4月重写该博文] 经过若干时间的努力终于搞定了STM32+LwIP和yeelink平台的数据互通,在学习的过程中大部分时间花在以太网协议栈学习上,但是在RT Th ...
- RT Thread根据开发板制作BSP方法
之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...
- RT Thread之 Uart2 操作
官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/uar ...
- 基于rt thread smart构建EtherCAT主站
我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...
- RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程
(1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...
- rt thread系统下添加wiznet软件包后,不插网线CPU利用率100%问题
rt thread系统下添加wiznet软件包后如果不插网线的话其他任务运行很卡,使用ps命令发现优先级低的任务很多都超时了 rt thread线程错误码 添加了一个可以查看CPU利用率的软件包CPU ...
最新文章
- mac下的intellij idea常用快捷键
- vue 自定义select下拉框样式(div模拟)
- 波形包络提取与峰值提取_研究提出从地震噪声提取微弱体波信号探测下地幔散射体的方法...
- ABAP Pattern usage - define own custom user exit
- 手把手教你用1行代码实现人脸识别 -- Python Face_recognition
- 足球预测_预测足球热
- 威纶触摸屏与电脑连接_PLC与这7种设备的连接方式,一看就懂!
- 目标检测第7步:如何在Windows 10下,配置Pycharm中的YOLOv5(5.0)虚拟环境?
- WAMPSERVER 启动后打开LOCALHOST是一张IIS7的图片的解决
- Solr管理索引库——(十三)
- spring mvc文件上传与下载
- 获取输入框内容,数值类型转换问题
- 数据的正态性检验汇总
- 河南高二计算机会考excel,(完整版)高中信息技术学业水平考试Word、Excel操作题考点总结...
- 比较大小教案计算机小朋友们,一年级数学下册第单元教案.doc
- 大数据之电信项目架构
- 分支-07. 比较大小(10)
- 改变水平线hr的颜色
- 简单的酒店住房退房管理系统
- 【MFC】使用TabControl创建Tab分页
热门文章
- MT8516处理器性能介绍,MTK芯片资料分享
- The Most Common Habits from more than 200 English Papers written by Graduate Chinese Students
- 分布式开发--分布式定时任务
- 2D弹簧质点系统的隐式求解
- SSM前后端分离技术
- 基站侧与核心网侧进行交互涉及PLMN和PLMN ID换算及其代码实现
- CodeGear Delphi2009 个人体验一
- 移动端切图内容包括什么_手机移动端前端开发切图的一些疑问
- python指纹识别_python安全编程之指纹识别
- 关于flv转成mp4的方法