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

STM32串口中断不能进入

[复制链接]
STMCU小助手 发布时间:2023-2-26 18:47
问题5 G8 P$ P$ c7 p
如题,STM32配置的串口中断不能进入,DEBUG时串口中断服务函数也不能打断点
  E" T( d+ E* B0 X, v. A2 n$ L: U
( _( [( W7 W4 S5 j9 U背景' c8 A5 e' j3 g! H3 ~7 k# W% R9 T
配置串口函数以及串口中断服务函数是写在一个.cpp文件中8 S' T% z: e* P0 {
$ a1 z8 p! O4 c" V3 i0 B  R
解决
$ w" ?( Z, k1 K6 G$ w. B- G在中断服务函数前面加上
2 z1 d+ _: e$ c+ c% g: k; ^+ w
  1. extern "C"
    ( D# n! \3 [7 _) T
复制代码
6 x: l+ d2 c& o6 o
也即:' x  |4 p; G5 f- ~6 G

7 t  [& z' X( T
  1. void USART1_IRQHandler(void)" |/ P4 C) R5 U0 B
  2. {
    5 V: M6 [' G: ]
  3.         //.....: h5 m: J" O* Z
  4. }
    % u( A/ q6 _1 U" R3 a# p' [" E
复制代码
/ u6 Y  a: v6 q+ d! C6 C8 A
改为
, @. r+ q1 U  T% m
  1. extern "C" void USART1_IRQHandler(void)# w# n% ~4 i2 W- c$ r6 o
  2. {
    , Z" @1 d' c+ m; b0 r
  3.         //.....3 f. c- x4 ]/ P7 j$ D$ o  G6 l
  4. }: I/ x: [2 {$ P0 H$ `
复制代码

8 k% [; K& b+ m5 z' r总结
( u$ D  q$ S( C" l8 M0 B/ o! a# bextern “C” 可以抑制C++对函数名、变量名等符号进行名称重整,因此编译出的C目标文件和C++目标文件中的变量、函数名等符号都是相同的,连接器可以可靠地对两种类型的目标文件进行链接。) z0 p1 ^4 @8 H2 T/ f
————————————————
% @% K* M7 [) m版权声明:火红色祥云, |/ S6 i2 V" b

4 J4 O/ a) X& A1 c; d' u
收藏 评论0 发布时间:2023-2-26 18:47

举报

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