OpenEdv-开源电子网

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

stm32 串口接收中断接收到00

[复制链接]

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
发表于 2016-8-23 23:38:12 | 显示全部楼层 |阅读模式
1金钱
stm32L151写串口中断,在中断中利用printf将接收到的数据发送回来,利用PC端串口助手发送数据,假如发送一个字节0x36,串口中断总是接收到0x00,连续点击几次发送,才能接收到0x36,大多数都为0x00.求指教

最佳答案

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

已解决,因为我想用PA10唤醒MCU,配置其为外部中断,唤醒后没取消,一直配置为外部中断情形
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
 楼主| 发表于 2016-8-23 23:38:13 | 显示全部楼层
已解决,因为我想用PA10唤醒MCU,配置其为外部中断,唤醒后没取消,一直配置为外部中断情形
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
840
金钱
840
注册时间
2016-8-23
在线时间
116 小时
发表于 2016-8-24 08:30:03 | 显示全部楼层
楼主能不能把程序贴出来看看,以为我用STM8L052c6写串口中断一直都不成功,能不能给我参考一下怎么写的。
天道酬勤
回复

使用道具 举报

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
 楼主| 发表于 2016-8-24 09:37:38 | 显示全部楼层
紫气东升 发表于 2016-8-24 08:30
楼主能不能把程序贴出来看看,以为我用STM8L052c6写串口中断一直都不成功,能不能给我参考一下怎么写的。

USART_InitTypeDef USART_InitStructure;
        
  GPIO_InitTypeDef GPIO_InitStructure;
        

  /* Enable GPIO clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);

  /* Enable USART1 clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //PA9-TX  PA10-RX

  USART_InitStructure.USART_BaudRate = 115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

/* Connect PXx to USARTx_Tx */
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,GPIO_AF_USART1);//PA9-TX

  /* Connect PXx to USARTx_Rx */
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//PA10-RX

  /* Configure USART Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Configure USART Rx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10;
  GPIO_Init(GPIOA,&GPIO_InitStructure);

  /* USART configuration */
  USART_Init(USART1,&USART_InitStructure);
       
        /*USART1 interrupt Enable*/
        USART_ITConfig(USART1 ,USART_IT_RXNE ,ENABLE );  //??????
               
  /* Enable USART */
  USART_Cmd(USART1, ENABLE);


void USART1_IRQHandler(void)
{

        uint8_t data;
        //USART_ClearFlag(USART1,USART_FLAG_TC); //ÕaÖÖ·½ê½oÃÏñ¿éòÔ
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
                 USART_ClearFlag (USART1 ,USART_FLAG_RXNE);
     data = USART_ReceiveData(USART1);
    /* Read one byte from the receive data register */
                 printf("receive data:%02x\r\n",data);//16½øÖÆêä3ö
        //         USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); //¿éòÔ
        //        if(data==0x36)
        //                stop_flag=0;
  }
         USART_Data_Parser(data);
       

}
再自行 配置usart1的中断优先级
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
840
金钱
840
注册时间
2016-8-23
在线时间
116 小时
发表于 2016-8-24 11:38:07 | 显示全部楼层
jorry 发表于 2016-8-24 09:37
USART_InitTypeDef USART_InitStructure;
        
  GPIO_InitTypeDef GPIO_InitStructure;

谢谢楼主,只有一个中断不用配置优先级了吧
天道酬勤
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-1 07:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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