OpenEdv-开源电子网

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

串口中断问题。

[复制链接]

5

主题

10

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-11-13
在线时间
4 小时
发表于 2018-12-26 09:33:16 | 显示全部楼层 |阅读模式
1金钱
我的串口初始化代码如下:
  USART_InitStruct.BaudRate = 4800;                             
  USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;           
  USART_InitStruct.StopBits = LL_USART_STOPBITS_1;              
  USART_InitStruct.Parity = LL_USART_PARITY_NONE;               
  USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
  USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
  USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;     
  LL_USART_Init(USART3, &USART_InitStruct);

  LL_USART_ConfigAsyncMode(USART3);                             
       
  LL_USART_EnableDirectionTx(USART3);                           
  LL_USART_EnableDirectionRx(USART3);                           
       
   LL_USART_ClearFlag_TC(USART3);                                 
   LL_USART_EnableIT_RXNE(USART3);                                
   LL_USART_EnableIT_TC(USART3);                                
   LL_USART_DisableIT_TXE(USART3);                                
   LL_USART_Enable(USART3);  

   在串口发送完成中断中,也执行LL_USART_ClearFlag_TC(USART3)。但是不停的触发发送完成中断。
参考手册,TE位复位会导致TC置1,但是我的TE一直是1,除了初始化,在进入发送完成中断时,也通过LL_USART_ClearFlag_TC清除了TC位,但是仍然会不停的触发中断。
我考虑使用查询方式或者发送缓冲器空中断完成工作,仍然想搞明白目前发送失败的原因。
哪位大神能帮忙解决一下。                                   

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
177
金钱
177
注册时间
2017-9-27
在线时间
33 小时
发表于 2018-12-26 10:01:59 | 显示全部楼层
楼主用的是LL库吧,我用的是标准库,但是看着还是很像的,你可以找一下,看LL库里边是不是有一个类似LL_USART_ClearITpendingbit_TC(USART3)的函数(主要是红色部分),有点话给替换你的LL_USART_ClearFlag_TC(USART3)函数,问题应该可以解决
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 08:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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