STM32串口通信使用奇偶校验的时候应该设置数据位长度9bit,奇偶校验是硬件完成的,并且stm32用校验位时,数据位要选9位,8位会出现故障可能。
STM32串口通信使用奇偶校验代码如下:#ifdef USART1_ON
//允许USART1的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Odd;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init( USART3, &USART_InitStructure);
STM32串口通信使用奇偶校验时在有奇偶校验时需要9个数据位,无奇偶校验时8个数据位即可。
关键字:stm32 串口 奇偶校验
引用地址:
stm32串口奇偶校验
推荐阅读最新更新时间:2024-11-11 11:48
STM32 FLASH 擦除(以及防止误擦除程序代码)、写入
简介:STM32 FLASH 擦除(以及防止误擦除程序代码)、写入。FLASH_Status FLASH_ErasePage(u32 Page_Address)只要()里面的数是flash第xx页中对应的任何一个地址!就是擦除xx页全部内容! 编译环境:我用的是(Keil)MDK4.7.2 stm32库版本:我用的是3.5.0 一、本文不对FLASH的基础知识做详细的介绍,不懂得地方请查阅有关资料。 对STM32 内部FLASH进行编程操作,需要遵循以下流程: FLASH解锁 清除相关标志位 擦除FLASH(先擦除后写入的原因是为了工业上制作方便,即物理实现方便) 写入FLASH 锁定FLASH 实例: #define FLA
[单片机]
STC12C5A60S2串口演示程序
#include reg51.h #define FOSC 18432000L #define BAUD 115200 #define NONE_PARITY 0 //无校验位 #define ODD_PARITY 1 //奇校验 #define EVEN_PARITY 2 //偶校验 #define MARK_PARITY 3 //标记校验 #define S PAC E_PARITY 4 //空校验 #define PARITYBIT EVEN_PARITY #define S2RI 0x01 #define S2TI 0x02 #define S2RB8 0x04 #define S2TB
[单片机]
STC单片机串口发送数据汇编程序
本段程序是在STC官方程序的基础上精简而成,只保留了串口单向发送,使用串口助手可以接收到数据。 本段代代码目的是为了调试的方便,单片机内部一些工作状态和数据可以通过串口发送出来,比如AD采集到的数据等,对调试程序会起到事半功倍的效果。以下为asm格式汇编代码: ; --- 使用伟福6000编译,STC15W401AS 实测通过------------ ;-----定时器2用作串口1的波特率发生器------- ;在Keil开发环境下请选择Intel的8058芯片型号进行编译 ;工作频率为11.0592MHz ;----------------------------------------- AUXR EQU 08EH
[单片机]
基于STM32设计的数字电子秤
1. 项目介绍 称重计量是现在社会活动中不可缺少的部分,随着国际交流的发展,称重计量的国际间的统一显得越来越重要。 电子称重技术是现代称重计量和控制系统工程的重要基础之一。近年来,随着现代科技进步,电子称重技术取得了突飞猛进的发展,电子秤在计量领域中也占有越来越重要的地位。尤其是商用电子衡器,以其准确度高、反应灵敏、性能稳定、结构简单、环境适应性强、便于与电子计算机结合而实现称重计量与过程控制自动化等特点,而被广泛用于工商贸易、能源交通、冶金矿山、轻工食品、医药卫生、航空航天等领域。 电子秤的工作原理首先是通过称重传感器采集到被测物体的重量并将其转换成电压信号,输出电压信号通常很小,需要通过前端信号处理电路进行准确的线性放
[单片机]
详解stm32定时器的编码器模式
前言: 增量式编码器在实际应用中还是很常见。stm32的定时器带的也有编码器模式。所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。AB相根据旋转的方向不同,输出的波形如下图所示: 第一步:具体配置如下图: 重点说明: 一、如果编码模式设置为 Encoder Mode TI1 and TI2 则会默认检测AB相的上升沿与下降沿; 每一个上升沿和下降沿都触发计数,所以每转一格计数器就会+4;那么上图计数周期设置为400;也就是编码器转100格,计数器就会置零,重新开始计数! 二、关于Polarity参数:这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检
[单片机]
STM32F103学习笔记——串口通信
在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一下使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含“stdio.h” (标准输入输出头文件)。 2、在main文件中重定义函数。如下: int fputc(int ch, FILE *f) // 发送数据 { USART_SendData(USART1, (unsigned char) ch);// USART1 可以换成 USA
[单片机]
STM32中SYSTICK定时器、端口复用和重映射
第一部分STM32SYSTICK定时器: systick 定时器按照字面意思就知道是一个简单的定时器,主要用来做延时,以避免MCU的资源浪费。 它是一个24位的倒置计数器,倒置的意思就是从最大数字递减到0,SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常,即用于中断系统。 systick有四个寄存器分别如下: 1、CTRL SysTick 控制和状态寄存器 LOAD :主要用于使能 systick定时器,异常请求,选择内部还是外部时钟,计数是否为零标志位 2、SysTick 自动重装载除值寄存器 :就是存放计数递减到零以后所自动装载的值。 3、VAL SysTick 当前值寄存器 CALIB :按照意思
[单片机]
stm32若干技巧
技巧1:关于串口接收 对于串口数据帧到检测,对于串口接收有判定帧头、尾 FIFO缓存等方式,推荐采用超时判断来确定一帧数据接收完成,尤其对于处理GPS,3G模块数据效,比判断帧头、尾效果好的多。参考网友模式 //检测超时函数 供定时器中断调用-1ms一次 // t为超时时间 __inline void Chk_TimeOut(u8 t) { if(!uartRMsg.rcOK && (uartRMsg.rcIndex =8) && (++uartRMsg.rcS =t) ) //超时之后,开始重新解码 uartRMsg.rcOK = true; } //接收函数, 供USART中断调用 __inline void Recie
[单片机]