OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3390|回复: 3

最近做单片机串口,需要使用偶校验

[复制链接]

1

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2015-5-6
在线时间
185 小时
发表于 2015-11-20 20:03:35 | 显示全部楼层 |阅读模式
5金钱
最近做单片机串口,需要使用偶校验。代码如下:
void USART_Configuration(void)
{
  //Usart1 NVIC 
  NVIC_InitTypeDef NVIC_InitStructure; 
  USART_InitTypeDef  USART_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//
NVIC_InitStructure.NVIC_IRQChannelSubPriority =2; //
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //I
NVIC_Init(&NVIC_InitStructure); //

USART_InitStructure.USART_BaudRate=9600;//
USART_InitStructure.USART_WordLength=USART_WordLength_9b;//9位数据
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(USART1,&USART_InitStructure);//
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//
USART_Cmd(USART1,ENABLE);//
USART_ClearFlag(USART1,USART_FLAG_TC);//
}


void USART1_IRQHandler(void)                 //?®??1????·??????ò
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); // 
}

if(!USART_SR_PE)//判断校验是否成功

           // USART_ClearITPendingBit(USART1,USART_SR_PE); 
       UART1_REC[UART1_CNT]=USART_ReceiveData(USART1);//接收数据
       UART1_CNT++;//
 if(UART1_CNT>19){UART1_CNT=19;}
}
else{//USART_SR_PE=0;
           //USART_ClearITPendingBit(USART1,USART_SR_PE);
USART_ClearFlag(USART1,USART_SR_PE);//清标志
          }



为什么串口没接收数据,请教各位

最佳答案

查看完整内容[请看2#楼]

偶校验不是要你检查的,是由cpu自己处理的,你需要的是将这句话 USART_InitStructure.USART_Parity= USART_Parity_Odd;//奇校验 配置成偶校验模式USART_Parity_Even
有想法就要做~~·
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2015-11-20 20:03:36 | 显示全部楼层
偶校验不是要你检查的,是由cpu自己处理的,你需要的是将这句话
USART_InitStructure.USART_Parity= USART_Parity_Odd;//奇校验
配置成偶校验模式USART_Parity_Even
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-20 21:53:04 | 显示全部楼层
帮顶....
回复

使用道具 举报

1

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2015-5-6
在线时间
185 小时
 楼主| 发表于 2015-11-21 10:06:03 | 显示全部楼层
回复【3楼】zc123:
---------------------------------
谢谢原子哥,USART_Parity_Even改了,但是还是要请教下,PC机无论发奇校验和偶校验,单片机都能收到数据部不报错,我用了偶校验,PC机按奇校验发数据的话要报错才对啊,这个怎么配置?
有想法就要做~~·
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 07:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表