![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 78
weymin
make it easier
展开
-
AT指令发送网络数据的两种方式比较
使用联网模块进行应用程序开发中,比较常使用到的联网模块,如4G模块,Wi-Fi模块等,使用AT指令方式发送数据时,查看数据手册,发现一般都支持两种数据发送方式。 1:指定数据长度。AT+CIPSEND=0,n。其中n代表本次发送的数据长度。 2:不指定数据长度。AT+CIPSEND=0, 发送该指令后等待模块返回 “>”字符,再发送数据,并在数据发送完成后,发送<...原创 2020-02-21 15:11:03 · 11242 阅读 · 0 评论 -
浅谈STM32在应用中编程(IAP)的应用(俗称在线更新程序)
STM32等单片机是可编程处理器,内部运行着我们编写的程序,而把我们编写的程序“下载”到单片机中,方法有两种:一、使用烧写器,如jlink,stlink,串口下载(需要配置boot0,boot1)。二、通过IAP实现一个在线更新功能。 对于很多使用单片机作为主要处理器的电子产品,如遇到需要替换芯片内部程序以满足需求的情况,通常的解决办法是寄回该产品然后通过烧写器直接替换程序...原创 2020-01-21 11:04:11 · 5974 阅读 · 2 评论 -
基于51单片机+12864中文液晶+GSM的智能家居报警系统
一个经典的单片机课程设计。主要用到的模块和资源有:LCD12864中文液晶模块,at24c02存储器模块用于存用户密码,ds18b20温度传感器模块,ISD1802语音模块用于语音报警,红外接收探头,用于接收红外键盘的信息、矩阵键盘4*4、红外势热,用于检测人体,GSM模块用于发送报警短信或者拨打用户手机等。IO口输入输出、串口发送。编译环境:Uv4 for c51主要的文件有:...原创 2019-12-13 15:09:37 · 1124 阅读 · 5 评论 -
串口中断结合定时器实现稳定可靠的串口接收
串口的接收方式可以有很多种,之前也提到过使用延时判断串口接收指正的值是否改变来进行接收完成的判断。也介绍过使用DMA的空闲中断触发以判断串口接收完成。以上两种方式,在一定情况下可以使用效果也还可以。延时判断的方式,对于不跑操作系统的工程里影响不大,但是到了一个跑实时系统的工程里,这种方式就显得不稳定了。而DMA方式接收,效率很高而且不占用处理器时间,但是这样接收就是太快了,在数据频繁发送的情况下,原创 2017-04-17 17:18:18 · 11008 阅读 · 2 评论 -
用DMA实现printf
printf作为标准库常用的一个函数,应用在嵌入式系统里,只需要将fputc函数重定向到串口,就可以使用printf进行格式化打印了。但在嵌入式系统中,printf是一个相对比较占资源的函数,特别是stm32这种主频不高的处理器,调试过程中如果过多地使用printf甚至会影响程序本来的结果。stm32有DMA这种好东西,把程序运行过程中的调试信息通过DMA的方式打印出来,无疑提高了程序运行...原创 2017-05-27 15:28:11 · 9099 阅读 · 10 评论 -
stm32串口间通信
最近要写个串口间通信的程序,要求PC端输入消息到串口1,然后stm32内部把该消息通过串口2转发出去,串口2得到消息返回,则通过串口1打印在PC端。实际上总体效果就是要是连接了设备的串口2具有串口1的功能,以便观察设备返回的信息以作后续的处理。使用的芯片是stm32l151,采用中断接收方式,把串口2所收到的消息全部打印出来。一开始直接参考原子的程序以接收回车键判断接收一次数据结束,实际上原创 2015-12-06 13:42:36 · 4303 阅读 · 1 评论 -
串口+DMA+空闲中断实现接收不定长数据
记录一下串口dma的使用,dma的好处在于他的传输是不需要经过CPU的,可以实现内存和外设的直接双向通信。合理使用dma能使程序设计变得简单。以串口3为实例介绍一下串口dma的配置过程,其他串口也是一样的,只需要修改一下dma的通道。 首先串口的配置过程与常规的配置基本一致,不过说明一点就是,如果使用dma接收不定长数据的话,比较常用的一种方法是利用空闲中断。所以在配置的时候就不要使能RXN原创 2017-01-28 16:42:37 · 9123 阅读 · 1 评论 -
STM32 特殊功能脚设置为普通脚的方法
一个项目中用到了STM32中的PB3,使用的时候发现这个脚不受控制,查看手册发现这是个特殊功能引脚。PB3 和PB4 分别是JTAG的JTDO和NJTRST脚,在默认情况下,STM都是把他们复用为特殊功能脚,在没有关闭JTAG功能之前,这连个脚不受GPIO的ODR寄存器控制。 要把他们配置为普通的引脚,需要禁止他们的复用功能。库函数是GPIO_PinRemapConfig(GPIO原创 2016-12-06 13:36:46 · 5555 阅读 · 4 评论 -
stm32+neo6m GPS模块定位系统
开发平台:主处理器是意法半导体的stm32f103系列,这款芯片应用广泛,并且资料很多。主要定位模块:ublox的一款芯片开发环境:MDK5.0主要代码还是参考原子的历程,在它的基础上实现了只提取经纬度,海拔等操作硬件连接:3.3V电源给GPS模块供电,stm32串口2接GPS。软件实现主要流程:stm32串口初始化,模块初始化,设置更新速率,保存配置,串口2接收消息,对接收到原创 2015-12-09 17:20:49 · 18969 阅读 · 11 评论 -
STM32 IIC通信简介+PCF8563时钟芯片示例
IIC总线是嵌入式设备最常用的接口之一,包括51单片机在内的MCU一般都可以进行IIC通信。IIC通信有3种类型的信号:开始信号,结束信号,和应答信号。开始信号:SCL为高电平,SDA由高电平向低电平跳变,表示可以开始传输信号,进行通信了。结束信号:SCL为高电平,SDA由低电平向高电平跳变,表示传输信号的时间已经过了。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的I原创 2016-09-01 15:06:29 · 28670 阅读 · 5 评论 -
STM32 RS485通信
RS485是主流的一种多机通信方式,多用于不同设备间的数据传送。最常见的是主控板和485接口的传感器间的通信。下面介绍常用的通信方式及代码,包括常用的CRC校验。初始化代码:(初始化控制引脚(收发)和对应串口(看硬件连接))//bound:波特率 void RS485_Init(u32 bound){ GPIO_InitTypeDef GPIO_InitStru原创 2016-07-27 22:34:00 · 20184 阅读 · 2 评论 -
STM32l151低功耗芯片串口通信(HAL库)
参考原子的stm32F1系列的串口通信实验,移植到stm32L1系列的程序代码。1、采用串口中断方式,串口接收到消息产生中断,因此需要使能RXNE寄存器。HAL库函数的调用方式是__HAL_UART_ENABLE_IT(&UartHandle1, UART_IT_RXNE); UartHandle1是UART_HandleTypeDef类型,具体参考stm32lxx_ha...原创 2015-11-17 16:53:57 · 14443 阅读 · 1 评论