OpenEdv-开源电子网

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

关于串口初始化直接配置发送完成中断就死机的问题

[复制链接]

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
发表于 2013-3-25 20:11:01 | 显示全部楼层 |阅读模式
不知道你们遇到过没有。串口初始化直接配置发送完成中断就死机,让我头疼啊。死到里面出不来了。而且一直死。并且清中断标志TC也没有用。不知道各位遇到过没
具有资深STM32点灯技术,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11986
金钱
11986
注册时间
2013-3-8
在线时间
1277 小时
发表于 2013-3-25 20:18:59 | 显示全部楼层
回复【楼主位】敌害:
---------------------------------
这个还真没遇到过,是不是中断函数没写好啊!还是配置有问题。
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
 楼主| 发表于 2013-3-25 20:24:43 | 显示全部楼层
回复【2楼】augustedward:
---------------------------------
应该不会的。我还不算是小白
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-3-25 20:26:18 | 显示全部楼层
那你是不是外部硬件故障啊,你让串口口悬空看看。
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11986
金钱
11986
注册时间
2013-3-8
在线时间
1277 小时
发表于 2013-3-25 20:28:18 | 显示全部楼层
回复【3楼】敌害:
---------------------------------
如果发送方式用不中断呢,用查询标志位,会不会死机?
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
 楼主| 发表于 2013-3-25 20:32:09 | 显示全部楼层
回复【5楼】augustedward:
---------------------------------
http://blog.21ic.com/user1/4621/archives/2011/84376.html   我遇到的大概和这人说的一样。您方便打开看看。但是啊。。我按照他的做了。依然不顶用
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11986
金钱
11986
注册时间
2013-3-8
在线时间
1277 小时
发表于 2013-3-25 20:47:43 | 显示全部楼层
你看看这个程序,版本V3.5.0的串口中断例子,我当时就是按照这个写的,没有问题。

Interrupt.rar

14.94 KB, 下载次数: 136

回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
 楼主| 发表于 2013-3-25 21:01:06 | 显示全部楼层
回复【7楼】augustedward:
---------------------------------
看了。但是我要尝试的是  发送完成中断。。。。。。我发现我一配发送完成中断就死机。。。连MAIN函数里的while(1)dou到不了
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11986
金钱
11986
注册时间
2013-3-8
在线时间
1277 小时
发表于 2013-3-25 21:14:07 | 显示全部楼层
回复【8楼】敌害:
---------------------------------
是什么芯片,能不能把代码贴出来看看
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
 楼主| 发表于 2013-3-26 08:45:44 | 显示全部楼层
回复【9楼】augustedward:
---------------------------------
就是根据原子24  485的那个例子改的,
void RS485_Init(u32 bound)
{  
int a;
    GPIO_InitTypeDef GPIO_InitStructure;
   USART_InitTypeDef USART_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOG, ENABLE);//使能GPIOA,G时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  //PG9端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOG, &GPIO_InitStructure);
 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA2
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);  

RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,ENABLE);//复位串口2
RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,DISABLE);//停止复位
 

 #ifdef EN_USART2_RX    //如果使能了接收
USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//8位数据长度
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;//收发模式

    USART_Init(USART2, &USART_InitStructure); //初始化串口
  
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; //使能串口2中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //先占优先级2级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级2级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中断通道
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
 
  for(a=0;a<5000;a++)
  {}

    USART_ClearFlag(USART2, USART_FLAG_TC); 
    USART_ITConfig(USART2, USART_IT_RXNE|USART_IT_TC, ENABLE);//开启接收寄存器非空中断

    USART_Cmd(USART2, ENABLE);                    //使能串口
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-4-23
在线时间
5 小时
发表于 2018-4-23 21:10:06 | 显示全部楼层
前辈,不知解决没,我这个新手搞的很头痛啊
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2018-5-28
在线时间
14 小时
发表于 2019-8-2 09:15:04 | 显示全部楼层
兄弟你这个问题解决了吗 小弟也遇到这个问题 求而不解啊
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 10:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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