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

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

[复制链接]
STMCU小助手 发布时间:2023-1-4 21:27
STM32使用USART中断主要有一下几步:% j; J% V5 X) S& U  Y$ y
' n  Q' d7 [5 M1 ]8 x  v. c& t
1,定义中断结构体,和串口结构体( R/ s# X5 N& z9 O4 t5 F
* x0 z5 H, H* @" [0 u
2,使能时钟& o$ a9 x) P+ @3 n3 X! j
0 u6 m; T6 ~* @3 H
3,编写中断函数6 b! b" J% b. C2 X, `3 W* J6 [
) U9 Z5 D7 k% b+ x
4,使能中断& S6 {) `6 \3 z" b( A+ p/ w/ z

% f! c& V. ^! i1 K: W( b4 R关于发送中断,笔者当时有个疑惑:' z* a0 ]: y+ ]

* h5 e2 z2 o- A8 ]& _! B( U# K
20180403234919889.png
! Y4 J, W- D& g5 |! c/ a
! b  L$ K' A. Z3 k+ T3 Q4 Z+ \上图是关于状态寄存器(USART_SR)中的两位。3 v* I4 m" J/ _; c

( \% T+ B- s/ r+ J
20180403235039557.png * K- B+ S6 _" F* ]! w
4 `7 y( m% g- p: X  ~  G( G+ H
上图是控制寄存器1(USART_CR1)中的两位。
" O2 i" J, ^$ Q
9 b' p$ X5 H8 U! e; s, L0 V, h* d笔者当时的疑惑是,这两位都可以控制中断啊,DR数据被移走触发中断,DR数据被移走也会使TC为置一,也会产生中断,这尼玛不冲突了?笔者当时陷入了死循环。
; k. Y4 w+ r# c* r$ Z+ r2 c  o' n! m5 L
后来笔者想通了,要进入发送中断,用库函数:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
- i6 `: ?: Q+ N3 D  c

1 i" z% {9 j5 v" s; h这个函数时用来打开CR1中的响应位的,比如上一句,是用来打开发送完成中断的,也就是置TXEIE位为1(并且发送缓冲区最初就是空),接下来就会进入中断服务函数。这里并没有打开TCIE位(即并没有使能发送完成中断,所以不会产生冲突)。4 ^8 i$ G* r) ^$ i+ m

0 l+ f3 L8 c9 A9 X% R$ m1 `. E: W当是以查询方式来发送数据时,并没有使能中断也没有使能中断通道,故怎么着也不会产生中断,只用查询SR寄存器就行了。
" t( Y) P$ e/ Q2 V( F: u6 Y————————————————
* ]) e' J( _2 N, i! s- F版权声明:家安. V, @; t! {6 e
) V% a4 S$ l1 l; F7 C
收藏 评论0 发布时间:2023-1-4 21:27

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版