完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32与ESP8266的uart通信
课设中用到了ESP8266这个模块,用着着实十分的方便,唯一不足之处便是引脚数量太少导致引脚数量不足。因此只能外接一个单片机,通过单片机读取传感器的数据之后通过uart串口通信传送至8266。 ESP8266: 8266只有两个uart串口,默认的是uart0串口打印debug信息等,而uart1只有一个发送引脚(TXD),因此将默认打印信息的uart为uart1,并连接USB转TTL至电脑,接收打印的debug信息。将uart0设置为uart通信模式,将发送与接收引脚分别与单片机连接。而后便可以在中断中接收和处理接收到的信息了,值得注意的是,8266uart中断中官方示例程序中对其进行了诸多任务操作形式的数据处理,比较麻烦,直接删掉重写反而更加简洁。 int fifo_len; //1 接收中断禁用,用于不再接受数据,因为现在处于处理数据中 uart_rx_intr_disable(UART0); //2 清楚中断标志 WRITE_PERI_REG(UART_INT_CLR(UART0), UART_RXFIFO_FULL_INT_CLR); CLEAR_PERI_REG_MASK(UART_INT_ENA(UART0), UART_TXFIFO_EMPTY_INT_ENA); //3 从 FIFO 读取接收到的数据长度 fifo_len = (READ_PERI_REG(UART_STATUS(UART0)) >> UART_RXFIFO_CNT_S) & UART_RXFIFO_CNT; u8 d_tmp = 0; u8 idx = 0; //定义一个临时接收的数据 u8 recieveData[fifo_len+1]; //3. 赋值给临时数组 for (idx = 0; idx < fifo_len; idx++) { d_tmp = READ_PERI_REG(UART_FIFO(UART0)) & 0xFF; //根据数据长度一个一个读取数据 recieveData[idx] = d_tmp; //赋值 } //做你自己的事情,recieveData[]数组就是接收到单片机的数据 //4 计数使能中断 UART0 WRITE_PERI_REG(UART_INT_CLR(UART0), UART_RXFIFO_FULL_INT_CLR | UART_RXFIFO_TOUT_INT_CLR); uart_rx_intr_enable(UART0); STM32: STM32拥有5个uart模块,使用默认的串口1进行数据的发送和接收。注意uart串口通信双方一定要共地。在使用STM32的uart1与8266进行串口通信时遇到了个问题,如果使用stm32中的printf函数进行数据的发送,因为printf是以字符形式处理的,所以会在串口工具和接收方都可以正常显示。但是当发送int或double数据时,其仍然是以字符形式发送,因此在串口工具和接收方以字符形式可以正常显示,以整形数据显示时就会显示此字符所保存在内存中二进制数据岁对应的整数了。因此发送整型数据时通过sendbyte函数逐个字节发送就可以了,但是不可以通过串口工具进行验证,因为出口工具只是被为字符形式显示,因此大概率也会是乱码。 INT或者DOUBLE型数据的发送和接收 通过union的形式将多字节分解为单个字节逐个发送,而后在接收方逐个接收。 //u32 bit data trans by uart must be deal with 8bit typedef union{ u8 data_char[2]; u16 data; }uart_data; void uart_send_char(u8 *data, u8 len){ while(len--){ USART_SendData(USART1,*data); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); data++; } uart_send_char(sgp_data.dat_char, 2); } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1752 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1611 浏览 1 评论
1052 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1666 浏览 2 评论
1926浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
711浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
560浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 15:11 , Processed in 0.838961 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号