推荐阅读最新更新时间:2024-03-16 16:14
STM32的串口函数_库函数USART_SendData问题和解决方法
个人记录: 昨天做串口实验的时候一直没有成功的原因,连续调用USART_SendData总是会出现前一个被后一个覆盖的情况。 之前觉得ST的官方库应该没有问题就没往这方面想,现在查查,确实有库的问题,还是自己对库不太理解。 还有遇到的硬件复位以后,发送第一个字符丢失的情况。 1、后字节覆盖前字节 -----------------加判断while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET){} 2、硬件复位之后第一个字符丢失 -----------------USART_ClearFlag(USART2,USART_FLAG_TC); ----
[单片机]
STM32F105串口USART3无法发送数据或数据错误问题
关于STM32系列的例程网上有很多,大部分是103系列,使用USART3,而且都是直接抄袭书上3.0的固件库或者转载别人的,所以很少又遇到类似我的问题,由于我用105系列芯片,开发板上只有USART3引出来重映射PD8、PD9,用的3.5的固件库,所以调试起来特别麻烦,没有可以运行的例子参考,网上down了一下都发现有问题,自己摸索半天终于发现了解决方案,觉得自己应该做出一点事情,为来源社会略尽微薄之力,所以决定开始写技术博客,一定要我自己原创的,发现别人一般发现不了问题的,绝大多数人转载的那种就算了。 其实103和105/107系列差别很小,只在建立工程的时候要稍微设置一下,有空专门写一篇建工程的,总的来说要使105的US
[单片机]
STM32调试笔记之USART-波特率
设计了一个串口通信电路:CPU 接 光电隔离IC 再接MAX3232;调试时发现串口助手里一直是乱码,而且示波器测得的波形也老是抓不到波形(不怪示波器,怪我水平太低了。。。);浪费了一个晚上时间,后来请同事帮忙,他帮我打开了串口助手中的“HEX显示”(新技能get),这样就能看串口发出来的实际二进制数据是什么了;这个时候他一看数据结果,和我实际发送的明显不一样,一下就怀疑到了波特率的问题;波特率改小之后,问题完美解决。 网上关于比特率和波特率的描述如下: 比特率=波特率X单个调制状态对应的二进制位数;即,两相调制(单个调制状态对应1个二进制位)的比特率等于波特率;四相调制(单个调制状态对应2个二进制位)的比特率为波特率的两倍;
[单片机]
STM32的ADC简介_DMA方式的程序设计与实现
ADC简介: ADC(Analog-to-Digital Converter,模/ 数转换器)。也就是将模拟信号转换为数字信号进行处理,在存储或传输时,模数转换器几乎必不可少。 STM32在片上集成的ADC外设非常强大,我使用的奋斗开发板是STM32F103VET6,属于增强型的CPU,它有18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次,连续,扫描或间断模式执行,ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 ADC工作过程分析: 我们以ADC规则通道转换过程来分析,如上图,所有的器件都是围绕中间的模拟至数字转换器部分展开的。它的左端VREF+,VREF- 等ADC参考电压,ADCx
[单片机]
STM32学习笔记(7):USART串口的使用
1. 串口的基本概念 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使用DMA方式,实现高速数据通信。 USART通过3个引脚与其他设备连接在一起,任何USART双向通信至少需要2个引脚:接受数据输入(RX)和发送数据输出(TX)。 RX: 接受数据串行输入
[单片机]
STM8L 在USART中使用DMA来发送与接收数据
以USART为例子来使用DMA 分两部分,第一为,DMA这个外设自身的配置;第二为,USART的DMA部分配置, DMA与USART的DMA配置 void SYS_DMA_Init(void) { CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE); /span //打开时钟,很重要 /* Deinitialize DMA channels */ DMA_GlobalDeInit(); DMA_DeInit(DMA1_Channel1); DMA_DeInit(DMA1_Channel2); /* DMA channel Rx of USART Co
[单片机]
STM32--对原子哥USART实验中printf重定向进行分析
原子哥的USART代码中,有一部分感觉看得不是很懂 #if 1 #pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; /* Whatever you require here. If the only file you are using is */ /* standard output using printf() for debugging, no file handling */ /* is required. */ }; /* FILE is typedef
[单片机]
stm32专题十一:串口通信(一) USART理论
/************************************************************************************************************/ RS232(负逻辑):由三条线(RX、TX、GND)组成。-15v ~ -3v代表逻辑1,+3 ~ +15v代表逻辑0,这里的±是相对于GND而言。 RS485:与232不同,485采用差分双绞线。RS-485总线标准规定了总线接口的电气特性标准即对于2个逻辑状态的定义:正电平在+2V~+6V之问,表示一个逻辑状态;负电平在-2V~-6V之间,则表示另一个逻辑状态;数字信号采用差分传输方式,能够有效减少噪
[单片机]