STM32
Mr_Johhny
有志者,事竟成。
展开
-
STM32F40X USART1 DMA串口数据收发
之前的文章描述过STM32F10X USART DMA串口收发数据的文章,近期接触了STM32F4,使用习惯了USART DMA方式,就不愿意用中断的方式接收数据,了解了并习惯串口DMA后,还是觉得真香!本文主要描述STM32F40X USART1 DMA的配置以及简单的测试。相对于STM32F1的串口DMA配置,STM32F4的串口DMA相对更复杂一点儿,毕竟STM32F4的功能还是强大很多。由于要配置STM32F4的USART1 DMA,根据datasheet的描述,做相应的配置US原创 2020-08-29 22:44:11 · 625 阅读 · 0 评论 -
STM32F1 USART DMA Modbus Master的实现
本文主要描述使用STM32F1 USART2的DMA方式来实现Modbus主机程序。首先简单了解下Modbus协议,在https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf(不知道为啥网站有时候打不开)MODBUS官网上下载到了Modbus_over_serial_line_V1_02.pdf文档作为理论指导。MODBUS协议简介:MODBUS串行总线协议是主从协议。一个主机连接到总线,一个或多个(最多247)从机也同样连接到这个总线上原创 2020-08-09 21:50:45 · 1798 阅读 · 1 评论 -
STM32F1 MCP23017 IIC扩展IO口驱动16路LED指示灯
MCP23017芯片是通过IIC来扩展IO口用的,看了datasheet后,了解到其功能之强大,能作为输入也可以作为输出。作为输入时,还可以通过中断来通知输入引脚电平变化。本文主要描述MCP23017扩展IO时作为输出来驱动LED的过程、实现、及注意事项。电路接线示意图:A0/A/A2器件地址选择引脚都接入到GND,MCP23017器件的地址为0x40。MCP23017器件有很多寄存器地址,首先要关注的是BANK的值默认是多少。从datasheet给出的表格可以看出,BANK的值原创 2020-08-01 12:35:57 · 6534 阅读 · 19 评论 -
STM32F1 TCA9548A 驱动多个IIC器件
TCA9548A的用途就是IIC扩展,每个TCA9548A可以扩展出8路IIC。TCA9548A芯片带有地址选择引脚A0/A1/A2,根据高低电平不同,从MCU的一路IIC最多可以接入8个TCA9548A芯片,从而可以达到扩展出8*8=64路IIC的效果。在什么情况下会使用到TCA9548A芯片来扩展?当一个MCU想要驱动多个器件地址相同的芯片时,如驱动8个OLED时,OLED的IIC器件地址为0x78,要用MCU引出8路IIC的硬件线路?显然得不偿失,这时候用TCA9548A就再合适不过了。下面是原创 2020-07-30 21:34:48 · 6218 阅读 · 18 评论 -
STM32 ADC NTC热敏电阻二分(折半)查表法实现测温功能
本文主要描述 - STM32 ADC NTC热敏电阻二分(折半)查表法测温功能的思路和代码实现NTC的相关属性:R25=10K±3% B25/50=4100K±3% 10K上拉STM32 ADC实现NTC测温的电路示意图如下:STM32的ADC分辨率为12位,模数转换的范围 0~4095(0x000~0xFFF)针对以上描述的NTC属性以及电路,对应的温度和测量的数字量的关...原创 2020-04-28 01:22:27 · 13862 阅读 · 12 评论 -
STM32 SP706S 外部看门狗的应用示例
看门狗是防止程序跑飞的一种兜底方案,STM32有自己片内的独立看门狗和串口看门狗,但是很意外的发现我测试片内的看门狗不好用,关闭了一扇门的同时,我又发现了一扇窗,板子上有SP706S外部看门狗芯片,那么STM32 SP706S的测试就应运而生。STM32和SP706S的电路部分说明示意图关于SP706S的文档描述对于SP706S来说,WDI是输入,那么对于STM32来说,对应连...原创 2020-04-25 00:05:56 · 5697 阅读 · 0 评论 -
STM32 W5500 MQTT Client 发布订阅及断线重连
使用STM32 W5500做MQTT Client,使得数据上传broker,并接收broker传来的消息,并支持断网/拔网线再插入网线能够重新连接broker这样的功能,需要具备以下条件:1、STM32 W5500基础入网配置,使能PC电脑端可以PING通W5500。2、STM32 W5500的TCP Client收发数据的回环测试没有问题。3、了解MQTT协议。关于MQTT的介...原创 2020-04-24 00:13:14 · 6204 阅读 · 5 评论 -
STM32 W5500 HTTP Server 微型web服务实现
嵌入式Web服务很常见,比如电脑通过WIFI接入网络,在浏览器地址栏输入 "192.168.1.1",或者其他地址,跟自己电脑的IP在同一个网段内,一般IP最后一段是1即可,可以打开路由器的管理页面。就像这样:这个页面就是有嵌入式小型web服务提供的网页。STM32 W5500几乎也可以实现上述的功能,但是由于STM32的RAM和FLASH储存大小是有限的,实现一个简单的web服务是没...原创 2020-04-22 00:09:27 · 10821 阅读 · 14 评论 -
STM32 W5500 HTTP Client POST 方式请求/提交网络数据
现在想让STM32 W5500通过HTTP Client POST的方式提交数据到远程服务器,并接收服务返回的JSON格式数据,解析和处理。实现以上功能,需要具备几个条件:1、STM32 W5500的基础配置,使得PC和W5500在同一个局域网内,PC可以PING通W5500。2、STM32 W5500的TCP Client可以成功发数据,HTTP协议是基于TCP协议之上封装的协议。...原创 2020-04-19 15:34:31 · 8961 阅读 · 8 评论 -
STM32 W5500 OTA功能 - bootloader及app的设计和实现
简述片内FLASH区域划分Bootloader功能设计与实现App功能设计与实现测试与结果总结原创 2020-04-18 21:32:22 · 1946 阅读 · 0 评论 -
STM32 W5500 Http Client Get请求 下载bin文件思路和实现
这两天在做STM32 W5500通过HTTP GET请求的方式下载bin文件,以实现OTA在线升级,到网上查了一圈,发现并没有很多有效的信息和资料。于是我就实现了一下,把思路和实现过程分享出来。实现W5500文件下载的几个前提:1、STM32 W5500的基础配置,使得 电脑端的CMD命令窗口能够PING通W5500,《STM32F103RC驱动W5500入网,并可ping通》。2、S...原创 2020-04-16 16:51:54 · 6779 阅读 · 4 评论 -
STM32F103RC W5500 NTP获取网络时间实现
NTP 是网络时间协议,将获取到的网络时间同步到本地,是本地时间与网络同步。一般来说,STM32通过W5500从NTP服务器获取到之后,会存同步到DS1302时钟芯片中,再读取DS1302时间在应用中使用。DS1302的时间设置和读取,可以参考《STM32F10x读取DS1302的时间,通过USART显示在串口调试助手上》。NTP协议是基于UDP基础上封装的协议,NTP报文格式 可以...原创 2020-04-13 23:24:10 · 2963 阅读 · 2 评论 -
STM32F103RC W5500 DNS Client端实现
DNS即域名解析服务。当我们想用W5500访问一个接口的时候,只给了接口的URL地址,但W5500实际通讯的时候需要用到IP地址,那么通过DNS域名解析服务,就可以实现将域名解析成接口对应的IP地址。DNS是基于UDP通信基础上封装了自己的协议报文的。关于DNS的协议报文,请参考《DNS(域名解析协议)详解》。STM32 W5500实现DNS Client 需要以下几点:1、ST...原创 2020-04-10 23:14:58 · 961 阅读 · 0 评论 -
STM32F103RCT6 W5500 DHCP 实现过程分析
对于DHCP的介绍,引用一下百度百科的相关内容:W5500传输网络数据,通过TCP、UDP来实现,也必须要有IP地址。要么给W5500设置一个固定写死的IP地址,这样的话,在不同的网络环境下,并不通用。有的局域网段的IP地址是 192.168.1.XXX;还有的局域网段IP地址是 10.0.0.XXX等等,写死固定IP地址,显然不太合适。那么DHCP的应用,就可以解决复杂的网络环境的IP地...原创 2020-04-09 00:05:04 · 2403 阅读 · 0 评论 -
STM32 W5500 TCP Server 回环测试
做了STM32 W5500联网通讯几个月了,回头总结一下 STM32 W5500 的TCP Server要注意的一些点:1、有好用的W5500基础支持库2、在PC的CMD命令窗口中可以PING通W5500设备。3、在测试的时候,条件允许登录到路由器的管理页面,查看连接设备是否有W5500的有线连接(非必须)。满足以上几点,基本可以测通TCP Server的回环测试了。贴出测试的...原创 2020-04-06 12:21:25 · 1960 阅读 · 1 评论 -
STM32F1 W5500 TCP Client 回环测试
刚刚接触W5500的时候,做TCP Client回环测试的时候,出现很奇怪的问题,查了好多遍代码,死活连接不上PC网络助手的TCPServer。其实代码本身没什么大问题,缺少一个知识点,在局域网内通讯,W5500入网需要路由器识别,才可以进行通信。总结一下TCP Client回环测试要注意的几个点:1、W5500的基础库好用。2、在PC的CMD命令窗口中可以PING通W5500设备。3...原创 2020-04-06 11:16:11 · 2206 阅读 · 0 评论 -
STM32F103的Systick无法进入SysTick_Handler中断的问题解决
今天做了一个小实验,使用STM32的嘀嗒定时器做一个LED闪烁(一秒亮,一秒灭),可是调试了好一阵子,没能达到目的。其实很简单,只不过我忽视了中断文件的存在;其次我的低级错误导致了调试时间过长,LED闪烁的方法写错了。1、不加Systick中断,先保证LED灯闪烁可用。2、保证配置Systick的代码是正确的。3、一定要#include "stm32f10x_it.h"头文件,工程中也...原创 2020-03-03 17:18:56 · 13510 阅读 · 4 评论 -
STM32F103RC引脚模拟I2C操作EEPROM(24C16)的方法总结
要使用24C16,首先了解一下它。1、24C16的总容量是16K bit,转换成字节除以8,即为 2K byte。2、DEVICE ADDRESS的前四位固定为1010,紧跟着的三位,范围是 000-111(对应十进制0-7),代表着总共有8页。3、WORD ADDRESS是每一页的字节数,范围是00000000-11111111(十进制0-255),每一页有256个字节,0-25...原创 2019-12-01 10:36:15 · 2302 阅读 · 0 评论 -
STM32F103RC用PB0引脚输出PWM波形
本次项目中遇到了定时器的PWM功能,之前没有使用过这个功能,调试好后做以下记录。我使用的是STM32F103RCT6单片机,使用了PB0引脚。工程需求是通过PB0的PWM输出50Hz,占空比可调的波形。理论部分不多说,网上有很多好的资源,以及ST官方的文档描述的很详尽。STM32 PWM功能,可以引用一个图片:下面贴上测试的代码#ifndef __STM32F10X_H...原创 2019-11-23 15:04:08 · 5663 阅读 · 2 评论 -
STM32通过PID调节混水比例调节阀开度的调试心得
有关PID的理论相关的内容,网上有很多介绍很全很专业,然而看完后并不能应用于项目落地,本文描述一个真实的PID控制混水中心出水温度的案例。关于PID控制,借用一下网上的图片:本案例目的是混水中心输出温度基本恒定的水温,在一定误差范围内。故Setpoint为出水设定温度(该数据保留1位小数,并乘以10,按照整数形式计算);实际出水温度通过PT100采样,并经过A/D转换相关计算后得到(该...原创 2019-11-03 13:08:55 · 3954 阅读 · 2 评论 -
STM32F10x读取DS1302的时间,通过USART显示在串口调试助手上
STM32的开发板上有个DS1302芯片,STM32从DS1302上读取时间,并通过串口通讯显示在PC的串口调试助手上。STM32和DS1302的接线如下:代码如下:#include "stm32f10x.h"#include <stdio.h>#include <string.h>#define AHB_INPUT 72#define DS1...原创 2019-05-02 18:01:16 · 2722 阅读 · 3 评论 -
STM32F1 USART2 DMA查询方式收发数据
现有一个小需求,使用STM32F1系列单片机做串口2的收发数据的功能,通过PC上的串口调试助手给单片机发一串数据,单片机收到数据后再给PC的串口调试助手发回去。本次使用的是串口DMA方式接收数据,和DMA方式发送数据。STM32使用USART2,对应单片机的PA1控制方向,PA2发送,PA3接收。代码如下:main.c#include "stm32f10x.h"#incl...原创 2019-05-25 18:15:05 · 4133 阅读 · 4 评论 -
STM32F103RC USART2串口查询方式接收数据
现有一个小需求,使用STM32F1系列单片机做串口2的收发数据的功能,通过PC上的串口调试助手给单片机发一串数据,单片机收到数据后再给PC的串口调试助手发回去。看似简单的功能,调试了好久才调好,记录一下供大家参考。STM32使用USART2,对应单片机的PA1控制方向,PA2发送,PA3接收。代码如下:z_hardware_usart2.h#ifndef __STM32F10...原创 2019-05-13 15:38:53 · 6812 阅读 · 7 评论 -
STM32F103RC USART2串口中断方式接收数据
现有一个小需求,使用STM32F1系列单片机做串口2的收发数据的功能,通过PC上的串口调试助手给单片机发一串数据,单片机收到数据后再给PC的串口调试助手发回去。先前有一篇是通过串口查询方式实现的,本次使用串口中断方式实现。STM32使用USART2,对应单片机的PA1控制方向,PA2发送,PA3接收。代码如下:main.c#include "stm32f10x.h"u8...原创 2019-05-23 19:00:21 · 9063 阅读 · 4 评论 -
STM32F103RCT6使用HY-SRF05 五针超声波测距模块进行测距实现
功能简述:STM32F103RCT6使用HY-SRF05五针超声波测距模块进行测距,再将测距好的值通过串口2DMA方式发送到PC的串口调试助手上。HY-SRF05五针超声波测距模块描述:软件实现思路:1、精准的延时工具2、超声波模块TRIG引脚连接到STM32的某个引脚,推挽输出,通常情况是低电平。触发超声波信号时,将STM32的这个引脚拉高,制造一个上升沿,并延时>10...原创 2019-06-25 09:49:53 · 6629 阅读 · 9 评论 -
STM32F103RC驱动W5500入网,并可ping通
通过STM32F103RC驱动W5500入网,需要先确定以下几点:1、硬件电路连接情况,STM32F103RC的SPI对应的端口,SPI1和SPI2的硬件端口对应关系如下:电路设计时,如要使用SPI接口,必须把对应的引脚接对。2、要确保电脑和STM32驱动W5500的板子联网在同一局域网内。3、在电脑的cmd命令窗口中,输入ipconfig查出自己电脑的IP。4、在cmd命...原创 2019-09-16 11:59:06 · 6094 阅读 · 4 评论 -
STM32入门程序-LED灯亮灭
学习STM32的入门课程,从点亮和熄灭LED小灯做起。本次实验使用STM32F103RC的芯片,其中LED1接到STM32芯片的PA8引脚,LED2接到STM32芯片的PB15引脚,如下图:LED小灯的电路暂不上传,其中PA8和PB15为低电平的时候,LED1和LED2灯点亮;高电平的时候,LED1和LED2灯熄灭。有了以上的理论基础,下面在Keil5中新建工程,关于工程的创建和里...原创 2019-04-27 10:08:27 · 5570 阅读 · 3 评论