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

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

[复制链接]
jundao721 发布时间:2024-3-19 07:26
       中断回来继续测试,晚上测试了一下串口通信。本以为按照常规的配置应该没什么问题,还是在软件修改上出了点问题,导致多花了一些时间。7 Z  e  ~4 _; @; D- k! c7 {

$ t6 c) V% y9 c# F      开始还是使用CubeMx配置基本环境,如图1所示:
6 p3 a3 d6 R* v 2-1.JPG , P- @; P, B0 r0 F4 u
图1
9 I4 f' H: p6 z  B4 v0 X) d* @8 S8 S! v
首先需要测试一下发送,隔1S发送一次,代码如下所示:
, q% U" ]2 F5 r5 V) O" Q. L8 p
  1.   HAL_UART_Transmit(&huart2 ,TxData2,2,100);" Y( V. E3 P$ k% T# v0 W
  2.                 HAL_Delay (1000);
复制代码
1 ?: ~' c/ O: l# M# w2 I

: _9 a2 f) l$ j* c9 P7 x- z$ N# ]% C! x通过串口助手是正常的,如图2所示:
. _3 r6 ]; K8 ?" q9 g- | 2-2.JPG + G! B: R+ ?0 Z+ y
图2
- S2 c( |* k, v% G7 r3 G! [/ ^# i: E
增加接收数据callback函数,检查一下中断,debug。发现无法进入中断。设置断点检查,发现能进入Handler函数,却无法调用callback函数。Debug时弹出一些莫名其妙的错误,如图3所示:
, x7 \3 i( ^9 l1 [0 J C0Debug错误2-3.JPG ) h" G+ N* @* ^' B7 E- d
图3
9 R$ n/ O: u4 x) S) s2 z7 U
5 |9 z4 J/ y7 s6 m7 A5 r0 k找到Handler函数的定义,发现接收完中断函数使用的是huart->RxISR(huart);其中并未调用callback函数,故将这个函数修改为UART_RxISR_8BIT(huart);,重新debug。通过串口助手发送数据,查看watch窗口,可以看到接收到的数据,如图4所示。$ d3 {7 w1 b) G. m2 h  m$ F
  1. if (huart->RxISR != NULL)
    9 E9 L: d1 e" G, f: f/ H
  2.       {8 u; w. B' i* \* X5 [" j# @
  3.         UART_RxISR_8BIT(huart);
    ; B. j& [/ l9 z- X
  4.       }1 f3 l/ \+ n; M' t5 S
  5.       return;
复制代码

+ }# z5 E& Y6 }+ v: i0 Z+ X, [
- g* g7 k# Q/ K+ q) Z9 r 2-4.JPG . O% S' D0 m5 t8 O
图4# z8 e' q1 O4 u- M! L

. L8 q: C5 {# l- D中断接收正常。所以由Cubemx生成程序的时候,还需要再检查一下。
: [7 o6 Z# w. _
C0.jpg
收藏 评论0 发布时间:2024-3-19 07:26

举报

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