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

【STM32C031评测】2.USART通讯(发送与中断接收)

[复制链接]
jundao721 发布时间:2024-3-19 07:26
       中断回来继续测试,晚上测试了一下串口通信。本以为按照常规的配置应该没什么问题,还是在软件修改上出了点问题,导致多花了一些时间。! @8 i! p( w/ F( v

- X1 ]8 a. A% {9 w+ [      开始还是使用CubeMx配置基本环境,如图1所示:8 A8 h0 h( b4 Q' l. ^: u" W) g: _
2-1.JPG
( z, ^* _* s6 L' {8 E4 Q, |图1
# `* W0 h/ w7 C. Q( a& n% o
+ o3 V4 I& y" A# _首先需要测试一下发送,隔1S发送一次,代码如下所示:3 s& U' ]7 j$ z# q/ k
  1.   HAL_UART_Transmit(&huart2 ,TxData2,2,100);- O1 y  S0 F4 [/ \) Z4 d" M
  2.                 HAL_Delay (1000);
复制代码

( c+ i9 k/ T7 L, F; n" m9 p( m: D4 D. L: B/ w* w9 K
通过串口助手是正常的,如图2所示:
; w$ x, `# F' q4 ` 2-2.JPG
" y( H) Z  S* C图2# j; S/ e2 d0 R, U( j0 G/ u9 M

! k- f' l3 z" c' g& B( x增加接收数据callback函数,检查一下中断,debug。发现无法进入中断。设置断点检查,发现能进入Handler函数,却无法调用callback函数。Debug时弹出一些莫名其妙的错误,如图3所示:
; U) X- z9 U% k1 Q4 E C0Debug错误2-3.JPG
6 ~. L3 v, j: q# v  ?( R图3* j% j( W  p$ i2 ^. ~
2 s- m- N+ K' H* t
找到Handler函数的定义,发现接收完中断函数使用的是huart->RxISR(huart);其中并未调用callback函数,故将这个函数修改为UART_RxISR_8BIT(huart);,重新debug。通过串口助手发送数据,查看watch窗口,可以看到接收到的数据,如图4所示。7 _1 M. u: e" E, j: l/ Y
  1. if (huart->RxISR != NULL)
    , {) k* T: N% u+ E) ~- S, S, i. D7 o
  2.       {# u9 M' i. o2 r6 Z. a+ Y
  3.         UART_RxISR_8BIT(huart);
    . ?" e0 ?5 Q* t! g0 A( f7 V
  4.       }  E6 T; y4 _8 J- N
  5.       return;
复制代码
% Y% a! }& B2 f, J0 b2 O# f

7 D% C1 s- ^4 t2 L 2-4.JPG
3 `% {( N, J8 q# U图4
: s4 \/ u+ \7 E/ E2 a" z! c) ]6 e
中断接收正常。所以由Cubemx生成程序的时候,还需要再检查一下。
( t' v$ G8 ]! m2 M& Y% ], N
C0.jpg
收藏 评论0 发布时间:2024-3-19 07:26

举报

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