你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

通过库函数使用STM32f103串口中断的心得

[复制链接]
STMCU小助手 发布时间:2023-1-4 21:27
STM32使用USART中断主要有一下几步:  c' e9 j" I5 t0 S) ]

. ]4 c# U2 [& c  q% T( q1,定义中断结构体,和串口结构体
$ H7 j8 G( U; P" y& L% `. ]4 F: k2 y' E- ]9 K' c
2,使能时钟
' `& Z+ T5 k0 d( G9 Q  e! @; x8 H. H! h2 x8 l1 E$ y" N
3,编写中断函数
: O4 @- S' |& p8 U: u" h7 r7 v
4 s4 ]( D8 _3 Q  ?. `: i2 a
4,使能中断
" \6 l6 @* T  e3 }
) l+ T7 j+ D( O" u: v3 V
关于发送中断,笔者当时有个疑惑:, y0 Y- O# w& m2 r

, P& [6 S9 E  h9 @) v2 r
20180403234919889.png
# i: b0 G. S, i, D# j$ w. T% {' F8 v- ]+ w. e# J
上图是关于状态寄存器(USART_SR)中的两位。/ g( n* r! o1 i$ q1 H" z

7 Y! B9 ]% D) w6 L5 i6 O4 Q
20180403235039557.png
/ q' `2 ]& T& v) ?/ w- I- Z/ k5 B+ Z- E& \3 H" e
上图是控制寄存器1(USART_CR1)中的两位。) O) `1 q6 _  T& R" f' E8 z
+ G2 a# Q; n; G# k  o+ x2 Z4 N0 T$ U% m
笔者当时的疑惑是,这两位都可以控制中断啊,DR数据被移走触发中断,DR数据被移走也会使TC为置一,也会产生中断,这尼玛不冲突了?笔者当时陷入了死循环。7 \. X; P$ a" M; D+ |# c

, b$ B" j& e+ t7 _4 g1 Y0 J后来笔者想通了,要进入发送中断,用库函数:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
4 n  g- d6 E9 H

8 W- h5 F9 n$ r' D3 |这个函数时用来打开CR1中的响应位的,比如上一句,是用来打开发送完成中断的,也就是置TXEIE位为1(并且发送缓冲区最初就是空),接下来就会进入中断服务函数。这里并没有打开TCIE位(即并没有使能发送完成中断,所以不会产生冲突)。! k: i8 j8 r' P) J/ `/ w- d

* z4 S9 i2 f5 p/ Q# y当是以查询方式来发送数据时,并没有使能中断也没有使能中断通道,故怎么着也不会产生中断,只用查询SR寄存器就行了。0 b2 v- K( H1 ~- |, e5 D
————————————————/ c' D# }  c1 n1 W; a* p
版权声明:家安
6 G& W5 M- o" O: U9 W; }
; z! P5 n' S- k1 E& E2 L& [/ V
赞 收藏 评论0 发布时间:2023-1-4 21:27

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版