OpenEdv-开源电子网

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

STM8L151G6串口接收中断异常

[复制链接]

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
发表于 2017-8-23 13:58:21 | 显示全部楼层 |阅读模式
1金钱
刚做了个串口程序,发关正常,接收想采购中断方式,可是一接收到数据就死机,也不知道是死在哪 里。哪位有做好的串口程序中断接收的,分享一下吧,不胜感激!以下是我的程序在这里贴出来,望老手们指点迷津。
void main(void)//**************************主函数
{
        uint8 i;
  System_Init();
  PVD_Config();
  __enable_interrupt();
  while (1)
  {
         
          /*Prompt_Tone(4);
          delay_ms(500);
          Prompt_Tone(0);
          delay_ms(500);
          Prompt_Tone(1);
          delay_ms(500);
          Prompt_Tone(2);
          delay_ms(500);
          Prompt_Tone(3);
          delay_ms(500);
          RLED_OFF();
          delay_ms(500);*/
                for(i = 0; i < 200; i++)
                {
                        RLED_ON();
                        UART0_Send_Byte(i);
                        delay_ms(500);
                        RLED_OFF();
                        delay_ms(500);
                }
        }
}

void Uart_Init(void)//***********************串口初始化
{
  CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);
  GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_3, ENABLE);
  GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_In_PU_No_IT);//RXD
  USART_DeInit(USART1);       //复位UART1
  USART_Init(USART1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1,USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx|USART_Mode_Rx));//串口初始化
  USART_ClearITPendingBit(USART1, USART_IT_RXNE);
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  USART_Cmd(USART1, ENABLE);
}

#pragma vector = USART1_RX_IRQn//*****************************接收中断
__interrupt void UART1_RX_IRQHandler(void)
{uint8 RxBuffer[40];
        USART_ClearFlag(USART1,USART_FLAG_RXNE);
        Prompt_Tone(0);
        RxBuffer[0] = USART_ReceiveData8(USART1); //Store the received byte in RxBuffer
        UART0_Send_Byte(RxBuffer[0]);
        return;
}

最佳答案

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

这是我的截图,有问题可以联系我
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

87

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1435
金钱
1435
注册时间
2015-5-19
在线时间
132 小时
发表于 2017-8-23 13:58:22 | 显示全部楼层

截图

本帖最后由 胖子阳 于 2017-8-26 21:06 编辑
胖子阳 发表于 2017-8-26 21:03
第一:在main函数初始化里面没有看到串口的初始化;
第二:我做的串口接收把PC2与PC3端口都上拉,是没问题 ...

这是我的截图,有问题可以联系我
微信图片_20170826210143.png
微信图片_20170826210058.png
微信图片_20170826210027.png
回复

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2017-8-23
在线时间
3 小时
发表于 2017-8-23 14:41:19 | 显示全部楼层
需要ST品牌的样品吗? 填一份扫IC网问卷可以得到三种ST任意型号的样品。[url= https://www.wjx.top/jq/15943942.aspx]》》点击此处申请 [/url]
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2017-8-23 17:20:40 | 显示全部楼层
[img][/img]
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2017-8-23 17:21:56 | 显示全部楼层
E:\11.png
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2017-8-23 17:22:23 | 显示全部楼层
我靠,图片怎么上传的?
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2017-8-23 17:23:51 | 显示全部楼层
有没有人用过STM8L151G6做过串口接收中断的?发个例程来参考参考 吧,弄了几天都进不了中断
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2017-8-23 17:25:24 | 显示全部楼层
弄得我现在都怀疑这STM8的串口接收中断是否靠谱了
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2017-8-23 17:27:50 | 显示全部楼层
该打开的中断也打开了,现在连软件仿真都进不中断
回复

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6639
金钱
6639
注册时间
2016-5-29
在线时间
907 小时
发表于 2017-8-23 22:27:18 | 显示全部楼层
IO初始化了没有.UART 时钟打开了没有.
回复

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
 楼主| 发表于 2017-8-24 15:18:34 | 显示全部楼层
操作系统 发表于 2017-8-23 22:27
IO初始化了没有.UART 时钟打开了没有.

贴到有程序,已经初始化过了
回复

使用道具 举报

9

主题

87

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1435
金钱
1435
注册时间
2015-5-19
在线时间
132 小时
发表于 2017-8-26 21:03:41 | 显示全部楼层
第一:在main函数初始化里面没有看到串口的初始化;
第二:我做的串口接收把PC2与PC3端口都上拉,是没问题的,不知道这里是否有问题;
第三:串口接收在哪里?即在哪里等待串口接收?
第四:UART0_Sent_Byte()函数的定义没有看到,这个函数怎么写的?
附上我的串口函数,用的是STM8L151G4芯片。
回复

使用道具 举报

9

主题

87

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1435
金钱
1435
注册时间
2015-5-19
在线时间
132 小时
发表于 2017-8-27 15:44:36 | 显示全部楼层
另外串口中断如何结束?就是怎样算接收到数据然后退出串口接收?不然一直在那里等待接收,串口中断函数是void,最后return是否有用?
回复

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6639
金钱
6639
注册时间
2016-5-29
在线时间
907 小时
发表于 2017-8-27 17:29:22 | 显示全部楼层
胖子阳 发表于 2017-8-27 15:44
另外串口中断如何结束?就是怎样算接收到数据然后退出串口接收?不然一直在那里等待接收,串口中断函数是vo ...

最后的return应该是无用.你不写出来.C编译器会完成这个.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-6-26 07:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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