嵌入式
文章平均质量分 74
一剃解千愁
已关闭CSDN消息,有需求请联系:2920338753@qq.com
展开
-
使用Betaflight Configurator飞控刷写固件时各步骤的含义
关于ISP、IAP、DFU和bootloader参考上面文章,总结一下:最开始,每次升级程序,将芯片从工作板到升级代码板,反复移植,不方便于是ISP来了ISP:在系统编程,就是通过芯片厂家在芯片出厂时固化的一种程序——bootloader,它能且只能够通过固定的串口或其他通信接口,与电脑连接进行程序设计。IAP:在应用编程,看作是ISP的升级板,IAP技术允许用户应用程序修改flash,有2个bootloader,一个是厂家固化的bootloader,另一个是用户自己自定义bootloader,启原创 2022-03-28 21:54:19 · 3962 阅读 · 0 评论 -
stm32定时器中TIM_ICInit、TIX、ICX、TIXFPX是什么
看这个函数,使用时,需要定义一个结构体变量,结构体变量里面填充数据,然后传入TIM_ICInit进行初始化。TIM_ICInit中,需要用到结构体变量的5个成员:这个函数里面怎么样进行的呢?void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct){ …… … …… … if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1) { a原创 2022-01-09 19:56:47 · 6018 阅读 · 4 评论 -
STM8S105S4T6C和STM8S105C6T6对比
STM8S105S4T6,44个引脚,LQFP封装(LQFP44 10X10),引脚比STM8S105C6T6少,但个头比它大。STM8S105C6T6,封装LQFP48(7*7),48个引脚S4T6比C6T6少4个引脚,少在哪?S4T6比C6T6少4个引脚,少了几个功能,这个和stm32各系列不同,stm32不同系列,引脚兼容,功能一样,只是引脚多的,是组多,每组一般最多16个引脚,比如PA,PB---------PG,,,渐少引脚往往是成组的消减,而stm8是每个组里面挑掉一两个,每组一般最原创 2021-11-22 10:07:20 · 2649 阅读 · 0 评论 -
MOS管与推挽输出、开漏输出
MOS管看作是电平控制的开关,类似三极管,可以通过控制栅极的电平高低控制漏极和源极的导通N沟道MOS管:栅极高电平时,漏极和源极导通,低电平时,,漏极和源极不导通。P沟道MOS管:栅极低 电平时,漏极和源极导通,高电平时,,漏极和源极不导通。CMOS管就是NMOS和PMOS的结合,通过控制(输入级)栅极的电平来控制输出级的电平左图,输入级为低电平时,上面的P沟道MOS管导通,下面的的N沟道MOS管截至,输出高电平。右图,输入级为高电平时,上面的P沟道MOS管截止,下面的的N沟道MOS管导通,输.原创 2021-11-17 16:51:15 · 5740 阅读 · 0 评论 -
uint8_t / uint16_t / uint32_t /uint64_t 这些数据类型是什么?
uint8_t / uint16_t / uint32_t /uint64_t 都是别名,c语言中有哪些数据类型?怎么样取别名在C语言中有6种基本数据类型:short、int、long、float、double、char1、数值类型1)整型:short、int、long2)浮点型:float、double2、字符类型:char二、使用 typedef猛然一看有点看不懂,可能因为美观原因,源码把它分开写了,实际红色框的是一个整体,是对这个整体取别名,同一个数据类型可以有多个别名,就像在导师叫我原创 2021-10-26 18:35:04 · 102169 阅读 · 3 评论 -
cubemx使用freertos时用systick和TIM的区别
cube工程和生成的代码上区别1,选择systickKeil:此时,中断优先级的抢占优先级是最低级的15,子优先级是0(分组4)只有带__weak 的 HAL_InitTick2,选择某一定时器:TIM1Keil:有带__weak 的 HAL_InitTick,被overwrite也有真正被调用的HAL_InitTick此时,中断优先级的抢占优先级是最高级的0,子优先级是0(分组4)定时器选择TIM6或TIM7比较好基本定时器(TIM6,TIM7)的主要功能: 只原创 2021-07-06 22:49:47 · 4445 阅读 · 0 评论 -
直接使用hal库创建工程模板
引入这些文件删掉F429没有的功能函数STM32F4 HAL库文件关系图正点原子习惯:全部放置同一个文件夹下都行,这样只是为了更好查找和管理,只要把这些文件加入到同一个工程就行:用stm32cubeMX创建工程...原创 2021-06-20 09:54:26 · 271 阅读 · 0 评论 -
重定向printf,不使用微库,采用ARM Compiler 6 报错如何解决?
复制正点原子的以下代码,不使用微库,采用ARM Compiler 6 报错:报错::’#pragma import’ is an ARM Compiler 5 extension, and is not supported by ARM Compiler 6//加入以下代码,支持printf函数,而不需要选择use MicroLIB //需包含#include "stdio.h"#if 1#pragma import(__use_no_semihosting) //标准库需原创 2021-06-11 21:40:22 · 6156 阅读 · 7 评论 -
解决BUG的一些记录
1,使用STM32cubeMX生成带freertos操作系统的工程,编译,报错,大部分关于port.c和portmacro.h解决方法:在自动下载的那个库里找到文件替换掉这两个文件,这个芯片为STM32F405RGT6,所以选择ARM_CM4F,我的路径:C:\Users\29203\STM32Cube\Repository\STM32Cube_FW_F4_V1.25.2\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F原创 2021-06-04 22:33:34 · 707 阅读 · 1 评论 -
stm32使用SWD下载代码,发现keil端识别不了芯片
背景:画了个飞控板,由于现在芯片“乱涨价”,买个芯片划不来,所以就把一个闲置的开发板的芯片取下来——STM32F405RGT6.如图:;;;把元器件焊接好后,先检测有没有短路,没有短路,插入电脑,发现keil识别不了,起初红框处是空白的检测电路:1,用万用表的电压功能检测到: 5V输入正常,3.3v稳压正常2,检查元器件是否焊错位,引脚是否有焊接反,:无,如stm32芯片有两个点,小的那端才是1脚,对应PCB的这个点,说明芯片安装也没有问题结果:那问题在哪呢?突然想到启动方式的问题或原创 2021-06-02 20:58:49 · 13838 阅读 · 11 评论 -
正点原子wukong开源飞控时钟配置之stm32CubeMX
数字来源下面,go to define就能找到再对照一下,这个说明还没改过来重点来了:进过上面那些参数配置,各外设时钟配置成多少了?使用stm32CubeMX直观了解一下:首先打开RCC时钟,使能外部晶振作为时钟,才能修改硬件接的是8M外部晶振,这改为8修改时发现 PLL_Q 是灰色的,改不了需要修改USB,这个时钟是USB的最终结果:可看到定时器3所在总线是APB1,84M,飞控利用这个定时器生成驱动电调的PWM验证定时器3时钟,频率84M...原创 2021-05-27 12:47:37 · 773 阅读 · 0 评论 -
stm32修改PWM频率的同时,占空比不变
参考资料:stm32影子寄存器、预装载寄存器,TIM_OC1PreloadConfig和TIM_ARRPreloadConfig的作用STM32定时器自动重装载寄存器和预加载寄存器的区别与联系结合代码与手册分析这两个函数void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)第一个参数:哪个定时器的通道1第二个参数:使能还是失能过程:1**,临时保存CCMR1的整个16位值**2,将第3位OC1PE位(0x0原创 2021-05-25 20:27:56 · 3535 阅读 · 11 评论 -
freertos与STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM,及如何分配堆栈空间
基于STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM再次理解STM32中的堆栈机制KEIL工具之堆栈2FreeRTOS高级篇7—FreeRTOS内存管理分析FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系使用freertos如何确定分配堆栈空间大小...原创 2021-02-06 15:13:39 · 4086 阅读 · 6 评论 -
stm32之蓝牙无线超声波测距
将以前做过的蓝牙和超声波结合就得到蓝牙无线超声波测距通过hc05蓝牙模块使手机和stm32开发板能互相发送字符串——DMA&空闲中断stm32f103之HC_SR04超声波测距在正点原子MINI板上两个未使用到的引脚作为IO口,一个作为输入,接超声波的ECHO引脚,一个作为输出接超声波的TRIG引脚,选择了PA11和PA12,只在超声波头文件更改就行”hc.sr04.h“代码:#ifndef __HC_H#define __HC_H #include "sys.h"#defin原创 2021-01-14 21:24:52 · 2261 阅读 · 2 评论 -
通过hc05蓝牙模块使手机和stm32开发板能互相发送字符串——定时器&串口非空中断
思路:1,定时器初始化时不开启,在串口中断中开启,在定时器中断中关闭2,串口每收到一个字节就产生一次串口非空中断,(在串口中断函数中)开启一次定时器,开始计时,在规定的时间内没有收到下一个字节就产生定时器中断,标记为已收到完整数据帧,同时关闭定时器。规定的时间:由波特率大致决定,如9600bit/s大约是10bit/ms,那么一个字节8bit,1ms不到,间隔略要大于即可,选择10ms,,感觉得慢慢调试。115200bit/s,一个bit需要1/115200秒,8个bit就8/115200秒=约70原创 2021-01-13 23:29:54 · 1636 阅读 · 3 评论 -
通过hc05蓝牙模块使手机和stm32开发板能互相发送字符串——DMA&空闲中断
原理:利用串口的空闲中断和DMA搬运工USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);//开启串口空闲中断单片机串口接收不定长数据时,必须面对的一个问题为:怎么判断这一包数据接收完成了呢?常见的方法主要有以下几种:1.串口接收非空中断+在接收每个字节时启动一个定时器,在指定时间间隔内没有接收到新字节,认为数据接收完成;2.在数据中加入帧头、帧尾,通过在程序中判断是否接收到帧尾来确定数据接收完毕或者像正点原子代码一样,用回车换行0xod,oxoa来作为原创 2021-01-13 17:23:57 · 2073 阅读 · 0 评论 -
通过hc05蓝牙模块使手机和stm32开发板能互相发送字符串——接收中断&空闲中断
原理:利用串口的接收中断和空闲中断USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);//开启串口空闲中断使用了2种代码,原理一致,可以在usart.h中通过设置宏定义来选择,宏同时只能有一个为1功能:通过蓝牙模块,使得板子可以发送字符串给手机(如按下按键),手机也可以发送字符串给板子(收到字符串,存数组,然后通过LCD显示)if((USART原创 2021-01-12 19:51:32 · 4892 阅读 · 3 评论 -
stm32之蓝牙模块HC-05使用
参考资料:【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)HC-05蓝牙模块使用教程HC-05蓝牙模块使用记录补充与理解:套餐有两个板子一个是参数架HC—USB—T,其含有一款芯片stm32f103c8t6,官方利用其内存把它设置成一个u盘,用数据线连接后可进入u盘获取软件另一个是HC-05蓝牙串口模块。杜邦线连接方式如图有插座,直接插入即可,注意蓝牙模块是靠外的那排,WiFi模块是插靠里那排这个HID转串口小助手是专门为这个参数架配套使用的,感原创 2021-01-10 13:31:34 · 27240 阅读 · 7 评论 -
stm32f103之HC_SR04超声波测距
参考资料:stm32与HC-SR04超声波传感器测距HC-SR04超声波测距注意事项STM32—驱动HC-SR04超声波测距模块HC-SR04初识HC-SR04 超声波原理图讲解与时序分析与arduino使用HC-SR04超声波原理,波速与温度的关系用Trig和Echo引脚实现测距的流程:1.通过Trig输出一段至少10us的高电平(脉冲),触发一次测距,超声波在传输的过程中Echo一直输出高电平。2.在Trig脉冲输出后,立即检测Echo引脚的电平,测出Echo高电平持续的时间t,t就是原创 2021-01-09 12:31:23 · 3953 阅读 · 12 评论 -
stm32如何控制舵机转动到指定角度?
推荐两个非常好的参考资料:舵机工作原理舵机控制STM32如何配置PWMSTM32定时器定时计算公式Tout = ((arr+1)*(psc+1))/Tclk ;其中:Tclk:定时器的输入时钟频率(单位MHZ) eg;stm32f103RCT6为72MHzTout:定时器溢出时间(单位为us).TIM_Period = arr; eg;4999.TIM_Prescaler = psc;原创 2020-12-25 12:14:40 · 2139 阅读 · 1 评论 -
如何记忆和使用PNP和NPN?
点击具体查看实物怎么判断PNP还是NPN?:PNP:NPN:记忆PNP和NPN的外形结构与导通:PNP: N在里面,箭头向里,导通时,箭头方向看作是电流方向,导通条件:电流从高点位往低电位流PNP是Ve>Vb>Vc,即发射极电位大于基极电位大于集电集电位。只看箭头和基极部分:VCC3.到基极要产生压差,所以基极为低,导通。NPN:N在外面,箭头向外,箭头方向看作是电流方向导通条件:电流从高点位往低电位流NPN的是Vc>Vb>Ve,即集电集电位大于基极电.原创 2020-12-14 22:57:55 · 10610 阅读 · 1 评论 -
stm32f103多路ADC检测电压
参考资料:stm32之adc多路采集+dma传输8路ADCadc.h#ifndef __ADC_H#define __ADC_H #include "sys.h"#define N 100 //每通道采100次,再求平均#define M 8 //为8个通道extern u16 AD_Value[N][M]; //用来存放ADC转换结果,也是DMA的目标地址extern u16 Average[M]; //用来存放求平均值之后的结果void Adc_Init(void);#endi原创 2020-12-04 18:35:39 · 7790 阅读 · 2 评论 -
STM32f4和f1串口USART初始化之minifly
外设可理解为复用功能其中第3点,开启所想要的复用功能:对与stm32的GPIO引脚来说,引脚有默认的复用功能也就是说这个引脚除了可以当普通的I/O口,它还能当定时器Tim,ADC,DAC,DMA,EXTIX,SPI,IIC,USATRT等,但是有一点要注意,就是这个引脚有能当这个复用功能用,但是它可能不是默认的复用功能,是其他引脚的默认功能映射到此引脚,它才有了这个功能,还有,功能映射不是想随便映射到哪个引脚就能的,都是指定的。总之,复用功能来自默认和映射。**对于stm32f103系列芯片,1,原创 2020-12-02 15:46:17 · 1217 阅读 · 1 评论 -
STM32F103,DMA控制器利用串口发送数据
实验目的:利用串口DMA将不断数据发送出去实验思路:利用DMA这个搬运工,将数据一个个搬到USART1的DR寄存器,大概步骤如下:1,找到USART1的发送引脚和接收引脚2,配置改引脚为复用功能,开启串口传输,只要DR有数据就会传输出去3,找到发送引脚的DMA通道4,配置DMA通道,将DR设置为外设地址,将数组,结构体等设置为内存地址,这里用数组做测试。5,使能串口DMA,开启DMA,数组的元素一个个发送到DR,从DR再到移位寄存器,数组地址递增,DR地址不能变,故不递增。usart.c原创 2020-12-01 21:46:46 · 3485 阅读 · 6 评论 -
STM32F4和STM32F1的串口DMA区别
STM32F4是M4内核和STM32F1是M3内核,使用起来都差不多,函数名称可能不同,F4的功能更强,外设数量也不同,具体看看使用串口DMA的区别:DMA可看作是CPU的小弟,数据的搬运工,当通过CPU配置好DMA后,DMA自己去工作,等CPU大哥有事找的时候再去叫小弟。STM32F103:MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,(TEXT_LENTH+2)*100);//DMA1通道4,原创 2020-11-29 18:22:42 · 2608 阅读 · 0 评论 -
关于串口USART一些知识
**中断中断有中断标志位和中断使能位,当开启对应的中断使能时,若其中断标志位置1,则会进入对应的中断服务函数,需要注意的是标志位是否自动清0。**TC:发送完成标志位RXNE:读数据寄存器非空TXE:发送数据寄存器空正点原子的这个循环里面的代码并没有将TC标志置0,然后又进入下一次USART1->DR=USART_RX_BUF[t],虽然实验现象达到了,但是感觉以后用在较复杂的地方这种操作容易出问题的,参考了下面的资料:USART_IT_TC,USART_IT_TXE中断标志位的区原创 2020-11-27 12:56:51 · 6694 阅读 · 0 评论 -
模拟SPI,模拟IIC,模拟UART
一,模拟SPI,先占个坑,以后慢慢填》》》》二,模拟IIC,先占个坑,以后慢慢填》》》》三,模拟UART51单片机版:直接看 main 主函数。首先是对通信的波特率的设定,在这里我们配置的波特率是 9600,那么串口调试助手也得是 9600。配置波特率的时候,我们用的是定时器 T0 的模式 2。模式 2 中,不再是 TH0 代表高 8 位,TL0 代表低 8 位了,而只有TL0 在进行计数,当 TL0 溢出后,不仅仅会让 TF0 变 1,而且还会将 TH0 中的内容重新自动装到 TL0 中。这样原创 2020-11-24 15:59:54 · 1244 阅读 · 0 评论 -
硬件SPI,硬件IIC,硬件UART
IO 口模拟通信,能了解通信的本质,但是单片机程序却需要不停的检测扫描单片机 IO 口收到的数据,大量占用了单片机的运行时间。其实我们并不是很关心通信的过程,我们只需要一个通信的结果,最终得到接收到的数据就行了。在单片机内部有这样的硬件模块,让它自动接收和发送数据,接收或发送完了,通知我们一下就可以了。一,硬件SPI,先占个坑,慢慢填,,,,二,硬件IIC,先占个坑,慢慢填,,,,三,硬件UART51单片机版:参考这篇文章:UART串口通信的基本应用51 单片机内部就存在这样一个 UA原创 2020-11-24 15:59:03 · 745 阅读 · 0 评论 -
如何将stm32f103RCT6的代码(含FreeRTOS操作系统)移植到stm32f103C8T6
否则这样报错!](https://img-blog.csdnimg.cn/2020092210482667.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTQ1NjA5OQ==,size_16,color_FFFFFF,t_70#pic_center)因为加了FreeRTOS操作系统,得修改堆栈大...原创 2020-09-23 21:51:26 · 4025 阅读 · 6 评论 -
FreeRTOS其他API函数的使用方法
main.c#include "led.h"#include "delay.h"#include "sys.h"#include "FreeRTOS.h"#include "task.h"//任务优先级#define START_TASK_PRIO 1//任务堆栈大小 #define START_STK_SIZE 50 //任务句柄TaskHandle_t StartTask_Handler;//任务函数void start_task(void *pvParameter原创 2020-08-12 21:50:27 · 253 阅读 · 0 评论 -
如何看懂FreeRTOS里面的函数指针typedef BaseType_t (*TaskHookFunction_t)( void * );
看懂这个typedef long BaseType_t;typedef BaseType_t (*TaskHookFunction_t)( void * );TaskHookFunction_t xTaskGetApplicationTaskTag( TaskHandle_t xTask ) ;对照void FunB(int n) { printf("call FunB. n is : %d\n", n);}typedef void (*PtrFunB)(int);void原创 2020-08-12 15:47:28 · 2977 阅读 · 0 评论 -
FreeRTOS函数vListInsert()和vListInsertEnd()有何不同?
vListInsert()向列表中插入一个列表项的时候这个列表项的位置是通过列表项的值,也就是列表项成员变量 xItemValue 来确定。**vListInsertEnd()**是向列表的末尾添加列表项的。插入pxIndex 所指向的列表项的前面。虽然列表中的 xListEnd 成员变量表示列表末尾但是不是 插在xListEnd 的前面或后面。在上面的列表中插入一个值为 50 的列表项 ListItem3,插入完成以后如图1)末尾在哪?答: pxIndex 所指向的列表项就代表列表头,因为是环原创 2020-08-11 17:02:02 · 2182 阅读 · 0 评论 -
C++ volatile的理解
对volatile的理解:用volatile 关键字声明的类型变量,表示该变量是随时可能发生变化的,告知编译器每次使用它的时候必须从它的地址中读取,不能“偷懒”(偷懒是优化的表现,当编译器发现两次从 i读数据的代码之间的代码没有对 i 进行过操作,它会自动把上次读的数据放在 b 中,而不是重新从 i 里面读,这样一来,如果 i是一个寄存器变原创 2020-08-10 11:16:49 · 234 阅读 · 0 评论 -
FreeRTOS对系统异常优先级寄存器的PendSV和SysTick 的优先级设置过程
为什么要设置PendSV为最低优先级?应用程序执行SVC 时都是希望所需的请求立即得到响应。 PendSV 则不同,它是可以像普通的中断一样被抢占挂起的(不像SVC 那样会上访)。操作系统 可以利用它“缓期执行”一个异常,一直到其它重要的任务完成后才执行动作。PendSV是为系统设备而设的“可悬挂请求”(pendable request)。1)上下文切换 不能在中断中进行,会导致中断延期。为了解决这个问题,使用 PendSV。PendSV可以挂起,也就是等到别的 ISR结束后缓期执行。2)为了实现原创 2020-08-09 09:26:18 · 3391 阅读 · 1 评论 -
Cortex‐M3异常类型,NVIC与中断控制
异常类型分为:系统异常和外部中断系统异常:编号为 1-15外部中断;编号大于等于16优先级的定义原则上, CM3 支持 3 个固定的高优先级和多达 256 级的可编程优先级,并且支持 128级抢占(128 的来历请见下文分解——译注)。但是,绝大多数 CM3 芯片都会精简设计,以致实际上支持的优先级数会更少,如 8 级, 16 级, 32 级等。它们在设计时会裁掉表达优先级的几个低端有效位,如何理解多达 256 级?由上面的外部中断清单IRQ #0—IRQ #239,可知共支持240个外部原创 2020-08-08 18:07:13 · 1482 阅读 · 0 评论 -
如何快速更改GPIO输入输出方向
采用宏定义#defind更改#define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}#define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;} //IO方向设置 先用与(&)对11脚的四个位清零,再用或(|)置1,#define SDA_IN() {GPIOC->C原创 2020-07-31 10:31:52 · 6188 阅读 · 0 评论 -
stm32笔记本
u8 tmp_buf[33]; u8 arr[]=" I love play stm32 ,can you join us,beauty ?";u8 *p1;while(1) { if(NRF24L01_TxPacket(tmp_buf)==TX_OK) { LCD_ShowString(60,170,239,32,16,"Sended DATA:"); LCD_ShowString(0,190,239,32,16,tmp_buf); p1=原创 2020-07-28 18:55:01 · 279 阅读 · 0 评论 -
如何使用ST-Link烧入代码
参考资料::最小系统stm32f103c8t6如何使用SWD模式烧录代码?硬件方面就是这样直接连接软件方面和SWD模式相似,,,,感觉正点原子的是不是就是SWD???1)该开发板的芯片是STM32F103RCT62)3)4)STM32F103RCT6,属于大容量产品,选择Hight—density5)下载完成...原创 2020-07-23 20:06:22 · 2124 阅读 · 0 评论 -
最小系统stm32f103c8t6如何使用SWD模式烧录代码?
参考资料:小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、 STM32F102xx和STM32F103xx微控制器。中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、 STM32F102xx和STM32F103xx微控制器。大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。互联型产品是指STM32F105xx和STM32F107xx微控制器硬件连接方面:SWD模式的原创 2020-07-23 19:24:03 · 26701 阅读 · 15 评论 -
USB转TTL串口、USB转232串口、232串口转TTL串口
首先认识一下这3中接口:1,USB,通过USB电平工作USB电平:电源线是5V,为USB设备提供最大500mA的电流,它与数据线上的电平无关,数据线是差分信号,通常D+和D-在+400mV~-400mV间变化。2,232串口,通过232电平标准工作232电平:逻辑1(MARK)=-3V~-15V逻辑0(SPACE)=+3~+15V3,单片机串口是TTL电平,所以叫TTL串口。TTL电平:+5V等价于逻辑“1”,0V等价于逻辑“0”(采用二进制来表示数据时)。这样的数据通信及电平规原创 2020-07-21 22:54:13 · 15361 阅读 · 2 评论