
STM32单片机开发
Utotao
不积跬步无以至千里
展开
-
解决AD中pcb原件移动提示绿色报错问题
有可能以下三个原因之一所导致的:1、不符合DRC规则,比如原件之间距离过近,就是报错2、右下角ROOM没有删除, 右键清楚就可以啦3、如果以上两个确证都是正常的,还是报错的话,终极解决方案:step1: 在pcb界面下,点击design-netlist-edit list,然后删除所有的网络标号;step2: design-class-component class ,然后右键下面列表...原创 2018-12-31 12:30:59 · 28490 阅读 · 0 评论 -
AD四层板制作过程注意事项总结
画原理图注意事项注意各个器件的标注注意各个器件的封装尽量使用熟悉的器件原理图各导线连接良好极性电容注意不要接反===================================================画PCB注意事项104滤波电容应该尽量贴近引脚放置导线电流应该顺着流,避免逆向电源线应该尽量粗一些4、注意数字地和模拟地的分离 磁珠隔离(成对出...原创 2019-01-11 12:05:41 · 5295 阅读 · 0 评论 -
pcb制作总结---基于STM32的电压自动采集控制系统
寒假回家前算是完成了第一块PCB(四层板)的初步测试,现把设置流程记录如下:参考链接:丝印导出为PDF[1]、[2]Altium Designer 覆铜与导线或过孔的间距设置设计规则附件:四层板实际设计五层(包括机械层),每一层设计图如下:1.原理图的设计注意事项:电路基本检查注意器件属性检查,这将关乎后面BOM表是否规范Designtor:写上器件丝印号,例如...原创 2019-01-29 18:30:31 · 3030 阅读 · 0 评论 -
DS18B20的操作【51单片机】
操作DS18B20的顺序:初始化 -> 发送跳过读序列号命令(0xcc) -> 发送命令让DS18B20启动温度转换(0x44) **->**延时1ms以让其完成温度转换 -> 初始化 -> 发送跳过读序列号命令(0xcc) -> 发送读暂存存储器命令(0xbe) -> 先读取低8位TL -> 在读取高8位 -&gt原创 2018-10-09 11:16:48 · 1871 阅读 · 0 评论 -
EEPROM写入一数组并显示【51单片机】
** EEPROM写入有个时间TWR要求,一般是5ms,如果写的间隔过小可能写不进去。为留有一定余量,最好设成10ms**以后要好好看数据手册啊,这个点卡了一下午…IIC.h#ifndef _IIC_H#define _IIC_H#include <reg52.h>#include <intrins.h>sbit SCL = P2^1;sbit SDA ...原创 2018-10-08 17:43:32 · 4261 阅读 · 1 评论 -
STM32计数器/定时器之PWM脉宽捕获+超声波传感器测距
2019.4.1:调试超声波传感器时候,最先使用的是中断来判断是方法配置成功,结果一直报错,才发现是忘记添加中断配置库文件了…愚人节快乐…具体内容明天补充其实,超声波传感器工作原理很简单,但是要想高精度、连续不断的快速实现距离测量还是很有难度的。当然,STM32也是这样,配置PWM体会最为深刻,实现一个功能很简单,但是效率如何呢?PWM的脉宽、周期准不准确,差了几毫秒或者几微妙是为什么,还...原创 2019-04-01 21:45:48 · 6598 阅读 · 0 评论 -
基于STM32串口通信的ESP8266WiFi模块使用
掌握esp8266的使用可以实现真正的万物物联。esp8266wifi通信对于MCU而言归结到底还是串口或spi通信。因此,掌握RS232通信协议、SPI通信协议以及esp8266的配置就可以基本搞定WiFi模块的使用。参考文章:[1] ESP8266WiFi模块AT指令入门指南[2] ESP8266 WIFI串口通信模块使用详解(实例:附STM32详细代码)[3] STM32串口接收...原创 2019-04-01 15:28:32 · 106939 阅读 · 13 评论 -
串口通信和USART通信
1 串口通信 1.1 通讯协议 通讯协议分为物理层和协议层。物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输;协议层:规定通讯逻辑,统一收发双方的数据打包、解包标准。串口通讯物理层之RS-232 RS-232标准主要规定了信号用途、通讯接口和信号电平标准。如图1为常见的设备间串口通讯结构图。 如上图所示,每个设备都有一个DB9接口,通过DB...转载 2018-04-09 23:43:30 · 4443 阅读 · 0 评论 -
stm软件模拟SPI通信
相较于stm32硬件SPI通信,软件SPI相交麻烦些许,主要更需要注意时序问题。但是使用软件模拟SPI通信过程,一是可以更有助有理解SPI的通讯时序和协议;而是方便今后的移植,对于不同的硬件MCU,只需要把相应的协议引脚号改一下就可以了。参考文章:[1] STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)[2] STM32 软件模拟SPI时序驱动NRF24L...原创 2019-03-27 10:34:33 · 2206 阅读 · 0 评论 -
stm32软件模拟i2c通讯读取lm75a温度
stm32硬件i2c有着一些bug,此外对于i2c这种通用的串行通信协议,从源头掌握和使用显然更加靠谱一些,当然,对于arm,还是直接操作寄存器来得方便的多。1、I2C协议1.1 i2c串行总线概述采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充更为容易。常用的串行扩展总线有:== I2C (Inter IC BUS)总线==、单总线(1-...原创 2019-03-24 21:25:50 · 12241 阅读 · 9 评论 -
基于STM32的串口数据环形缓冲队列
最近进行STM32开发,在处理大规模串口数据的时候,由于数据处理速度不够及时而出现掉包的问题,为此通过以下方案成功解决。BTW:在串口循环发送一组数据的时候,应该在发送第一个字节之前也加上判断缓冲区是否为空。正确形式如下://这个函数会循环执行void stop(void){ //发送10给上位机,使其进入数据解调 float_data.d = 10 * 10000; while...原创 2019-03-20 21:45:46 · 12751 阅读 · 0 评论 -
STM32 DMA的使用
DMA配置:void DMA1Config(void){ //配置ADC-&gt;Memory DMA_InitTypeDef DMA1_InitStructure; //使能时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE); DMA1_InitStructure.DMA_BufferSize = 1;// DMA1_Ini...原创 2019-02-14 10:57:56 · 375 阅读 · 0 评论 -
STM32 ADC的使用
本例程测量的是PB0口的电压1、配置ADC使用的GPIO口void ADC_GPIO_Config(){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输...原创 2019-02-13 20:36:16 · 2628 阅读 · 1 评论 -
外部中断控制PWM的输出与开启
完成外部中断的配置 完成PWM输出的配置,不使能定时器 配置中断处理函数void EXTI1_IRQHandler(void){ if(flag) { TIM_Cmd(TIM3,ENABLE);//开启PWM } if(!flag) { TIM_Cmd(TIM3,DISABLE); } if(flag) { flag = 0; } else { ...原创 2019-01-11 21:28:53 · 2859 阅读 · 3 评论 -
STM32 同一定时器四路不同占空比PWM输出+舵机角度精准控制
**PWM单路输出库函数配置过程:**(1)使能定时器3和相关IO口时钟。 使能定时器3时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 使能GPIOB时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABL...原创 2019-01-11 11:47:14 · 8607 阅读 · 2 评论 -
STM32配置多个外部中断
1.配置中断接收引脚 GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//AFIO时钟是为了开启端口的复用功...原创 2018-12-16 14:04:22 · 16400 阅读 · 0 评论 -
STM32串口接收不定长数据
STM32串口接收不定长数据1.配置串口void USART1_Config(void){ //初始化使用的端口 A9->TX A10->Rx //初始化GPIO GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART1_InitStructure; //使能时钟 RCC_APB2PeriphCl...原创 2018-12-15 22:44:06 · 6477 阅读 · 7 评论