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

基于STM32实例-用按键控制串口发送数据(文末附代码)

[复制链接]
STMCU小助手 发布时间:2021-9-14 13:42
实例介绍( ?4 x. D* e- G7 F0 ]( ?3 F- k- I
    视频中是实验效果:
* t( A" n0 a" K5 V0 C8 l% M# v5 _    按下按键,串口调试助手接收区显示接收到的字符“1”,同时LED2亮一下表示发送成功。& g5 o' R7 V9 [3 r, D% a
    开发板用的是STM32F03ZET6芯片。+ E! p6 e# B0 `9 p* d0 x9 q
5 I) N0 K' O: }9 s0 [9 s

; @9 J, o6 u" g8 O" I) d' \    主函数main.c代码如下:
; a* k% k' C" k, B3 h
  1. " z0 S: k# u# |7 M3 V$ k/ V
  2. #include "SysTick.h"
    ( G  t. b- G2 Z! f9 P0 ^8 m
  3. #include "led.h"
    * A8 j: f5 d6 j5 }
  4. #include "key.h"$ L  y2 ]! s- D2 D8 Y3 k6 g
  5. #include "uart.h"
    ! T0 y% H* z2 [6 y

  6. , O' l" F2 {( u

  7. - V& N% e  ^1 r+ B9 X/ J$ x( g
  8. /*************************************************
    % d7 H$ F$ l9 T- ?5 g
  9. *函数名:主函数
    , ]7 \! o+ U! M8 y& j7 ^9 C
  10. *函数功能:按下按键KEY_UP,向串口发送字符1
    ! u; x' g  h- Y7 B
  11. *输入:无8 N0 V  y4 c8 C- B0 r
  12. *输出:无# C9 f, G6 Z3 z1 U
  13. **************************************************/5 ^$ R+ T( ~  c: Q7 j) y7 Z  g

  14. * \5 Y. o" R$ G0 p* a
  15. int main()% j, q# \' t* c6 \2 K$ A8 M3 x1 R) H
  16. {
    ; V& Z$ t+ M% M) C. a" Z! Y- _) O' ~
  17.   SysTick_Init(72);                 //初始化延时函数
    2 h5 |' c' Z5 @, C  T* z& n& q
  18.   LED_Init();                       //初始化LED            
    + [( [; x$ G% f  `
  19.   KEY_Init();                       //初始化按键3 \4 _5 ^9 @8 Q; i3 U# f( Z
  20.   USART1_Init(9600);                //初始化串口1,波特率96007 q! F) S) N1 V2 v

  21. - ~& n1 x8 V2 z1 Q
  22. 4 r5 u0 D2 `, n
  23.   while(1)
    6 E  Z& Y: |5 x6 m
  24.   {
    / L$ b6 G2 T  ^" C5 K
  25.     if(K_UP == 1)                     //判断上按键是否按下: s# {; F& x; n/ V6 i5 f
  26.     {! P' h! u9 ^! R7 C- K
  27.       delay_ms(20);                   //按键消抖
    0 @2 Z) i3 B/ ^! n, h4 r1 s: P
  28.       if(K_UP == 1)
    5 L3 N5 N8 e/ R% X# w- R: Q2 e
  29.       {
    5 b6 ?5 j$ q4 p$ e) [
  30.         USART_SendData(USART1,'1');   //发送字符1  ]. B. R  ^7 `% k; I, Q
  31.         led2=0;                       //led2亮,表示发送成功
    % t- n- A6 X" p! n# r7 W
  32.         delay_ms(500);
    : M% o) U4 u6 [' g
  33.       }" M' F% _9 f2 p- @/ D0 C
  34.     }
    & i" e# C2 K" o! H: j& }
  35.     led2=1;                           //led2灭
    # w* F. F7 |9 T* K% w+ A6 t- c
  36.   }
    - H; _& o- R0 A0 W2 e8 f% v3 C* e- s
  37. }
复制代码
# f# }4 R4 k1 z4 l

: ^: E" K+ C* @; U- \8 [ 从主函数可以看出,首先对外设初始化。/ w: `+ n6 E: t$ [. Z

5 d+ K1 A2 v' z' @/ _2 x9 ^6 z9 U

- R% G7 {5 {2 H0 ?8 m5 s; {- B    while死循环中,判断按键按下之后,通过串口发送字符1到PC端的串口调试助手,同时LED2亮一下表示字符发送成功。/ h5 w& [. c# i8 U! e' e

' t- O& J3 G3 k
& y1 [' S: ?9 X. c% B/ b
报错分析$ b* \, Y6 A# s: C% |8 Y

. l- `8 Z1 ~4 d3 `3 i% ^

/ r/ k9 J) X: ]4 `2 P    记录下我踩过的坑,以及解决的办法,希望对你能有帮助。4 v" H: w+ a! K  e7 |
( x/ {8 _3 F9 z$ A% @

' b+ t% ]- _% j    当时用的标准库开发,一顿操作猛如虎,敲完代码,点击Rebuild图片,好家伙报了5个Errors。4 J1 _2 L/ g, D
18.png
    之前没遇到过这种报错,网上搜一下只是得到了笼统的答案,没有具体指出如何操作。   2 [, v3 r. Q, ]/ r6 y# T
# @" P- D; {3 Y% s$ k

3 r) z1 J% z$ M+ ?8 U+ n6 N' T    产生如下报错,原因是编译器没有找到XXX函数的定义。
2 `8 |6 D) c0 A0 g+ Q( E! u

  1. % Q# L. U# R& q( H$ V
  2. XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).
复制代码
分为如下两种情况,我遇到的是第二种:7 v5 ~0 u% X" @1 m$ l( b6 f
XXX函数的头文件没有包含进工程里面,检查下图Include Paths是否缺少XXX所在源文件(.c文件)的头文件路径。
" [9 d# M. ~+ ^
16.png
XXX函数所在的源文件没有加入到工程里面。检查了一下,发现工程中缺少stm32f10x_usart.c这个串口外设库文件,添加上就行了。/ O4 n" w/ |9 x+ Z, e* x7 e
17.png
总结; h! i* w: y7 r6 o  E9 e* V- \6 x
    有时候为了偷懒,把旧工程文件复制一份,在此基础上建新工程。但是,复制一时爽,修改火葬场,两个工程之间细微的差别可能会造成各种各样的报错。3 Y0 I! c% o7 [1 ?6 }1 E
+ Y! v& r$ ~. \1 _" }

# m# X' E; O! v2 Y' ~3 h9 e代码如下:
3 r' n4 @& {  R2 _3 whttps://pan.baidu.com/share/init?surl=AvGKZ6u4nL4mi8cEyY0s-g
% {1 g2 [: H  s6 v' A$ m$ Q提取码:! X& z/ Q  J! C; s7 i; x$ Q$ ^
stm3; R( z5 n4 K. l( `8 B
1 ]& n. o; H- @+ q; n1 Y. Y
文章出处:STM32嵌入式开发
: y9 O1 p: B. t7 k( _1 M; {& k0 ^% n; ]; N! s
收藏 评论0 发布时间:2021-9-14 13:42

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版