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

nucleo 072串口发送不出数据,你想到了没有?

[复制链接]
zhang_123-55168 发布时间:2014-12-21 09:48
本帖最后由 zhang_123-55168 于 2015-1-13 12:16 编辑 $ V5 X8 _* N" b% v
* K2 }3 Q. h. O1 c# k
     收到nucleo有几天了,昨天拿来发送数据竟然发送不出来,莫名其妙。收货当天已经验证了我的板子是好的,可以有数据经虚拟串口发送到pc机。昨晚再次用MBED编程得到hex文件下载还行。上网下了网友发布的那个串口和adc3的 例子还是好的。证明硬件没有问题。那还什么可能性呢? 9 k% c: q; C7 ~% s3 Y* j
    我是个超级懒的人,再说水平也是差强人意。程序一行一行的实在是看不下去。一个一个从网上找程序试验,中间省略10000字,中间省略一个晚上。* ^! `% V* i" l$ ?, [) U3 D, N3 J
   大早起来,没办法,还是查程序吧,串口号了?????????、嗯,真错了。程序是1,nucleo怎么是2呐,无语。都是例子,为啥串口号不一样啊。。。。。。。。。。。。。。。。。。。。。。。4 o/ ?4 U+ G3 j3 q
  不叨叨了,附上我可以单独直接发数据的例子,灯闪烁。
+ a6 C) j* V9 j9 w9 _2 ? PS: 例子程序好大,顺便把不必须的文件夹删掉几个。删除半天压缩后还是100M。没办法,单把main.c发来吧* q" n* ]+ f( `' `" i
8 y0 [6 Z3 o8 U5 {) n$ L, J) _' K# T

main.rar

下载

3.69 KB, 下载次数: 24

nucleo 072串口发送main文件

赞 收藏 1 评论16 发布时间:2014-12-21 09:48

举报

16个回答
Dylan疾风闪电 回答时间:2015-1-7 20:30:13
用库函数或者直接操作寄存器来控制串口好了。串口的驱动没什么内容的。
  1. /**
    ; F& d# L+ b, C7 P1 W# m; t
  2.   * <b>初始化通用异步收发器。</b>
    8 O: A7 q2 _2 X# d0 W& W8 S  V
  3.   * @param  USARTx            串口外设* |& M9 A9 I9 f
  4.   * @param  baudrate    波特率8 O1 w( V- G7 I, Z
  5.   * @param  parity      校验位。0 None,1 Odd, 2 Even
    8 N/ ~6 q  j3 @0 D( X% Y
  6.   * @param  length      数据位个数。带校验7 or 无校验84 b: Y8 ?: x* c1 j* M4 U$ \
  7.   * @param  stopbits    停止位个数。1 1bit, 2 2bits, 3 1.5bits" p- \7 C# ]0 g0 y- j+ |1 j5 E
  8.   * @retval pdFALSE (0) , else return pdTRUE (1).
    + B$ ~8 V( r- u; }
  9.   * @version            v1.0(2013-12-5)
    6 v$ m9 |9 M( k3 Q3 y5 j; S
  10.   * <p>重写函数的功能说明!
    2 k5 e/ q5 O2 Y& ?9 `
  11.   * @author             Dylan
    % P& p, b3 \5 a& B
  12.   */
    / k1 G- B) E8 p  q7 D+ ~0 k8 u
  13. uint8_t BSP_USART_Init(USART_TypeDef* USARTx, u32 baudRate, u8 parity, u8 length, u8 stopBits)
    / X$ Z* S2 [! S: j  t- [' q1 V; W
  14. {
    5 Q: X2 `% u8 L  q7 X% i' z
  15.         GPIO_InitTypeDef GPIO_InitStructure;
    ! o$ d$ Y( m- K0 \
  16.         USART_InitTypeDef USART_InitStructure;! P. p7 o# J% M: n. B& z# ]
  17. & n( v0 t, U5 E" \0 G
  18.         if (USARTx == USART1)! g* S  ^9 `; o
  19.         {
    ) I( ^  J# x  @% J
  20.                 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    2 K* i. I- o4 [3 \1 M
  21. ' [  Q# F/ M. g% b
  22.                 // GPIO的公共特性
    , Q$ C+ X- v/ u+ u
  23.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;$ i2 F2 C* w1 S3 x9 \; Z
  24. % e" }, g6 r, d# _
  25.                 //COM1  T2 R, W. v& i9 Y' l2 N; ?
  26.                 //USARTx_TX   GPIO_Mode_AF_PP4 H& z3 |8 P3 B7 `+ F. l; i; `
  27.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    8 [, I! n' @2 U& q/ j3 _" ^2 _6 L
  28.                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    1 ^3 }/ m  D# y  v
  29.                 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    # M5 r4 a7 A; `" A
  30.                 GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(ST_COM1_Tx);
    $ }' |# A8 [% _4 ?9 A! S
  31.                 GPIO_Init(SPLIT_DEFINE_PORT(ST_COM1_Tx) , &GPIO_InitStructure);
    ' m* S/ [/ `. l2 y- O8 r3 [
  32.                 SetAF_COM1_Tx;//必须选择复用功能
    ' N9 a+ j+ i5 K" t/ I" W
  33. : {7 w( P& P, U( u; `/ P- o+ l
  34.                 //USARTx_RX   GPIO_Mode_AF_PP & IPU: |  Y2 \7 Q) q2 M" V( ^
  35.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    & f2 G& h& _7 ~0 K: G" L
  36.                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    , d7 d7 G' e. w8 E
  37.                 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;5 _' t. S+ {5 n. |0 J5 L
  38.                 GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(ST_COM1_Rx);8 V8 g6 t: q6 y, V3 _2 [4 g
  39.                 GPIO_Init(SPLIT_DEFINE_PORT(ST_COM1_Rx), &GPIO_InitStructure);9 {1 O1 i! I* b3 |8 L' _1 R5 ~
  40.                 SetAF_COM1_Rx;//必须选择复用功能
    2 ]4 e, `, z2 u# ]- S/ B* X

  41. : }$ _8 x5 Y# h$ S$ ?! A1 w2 I
  42.                 //RS485-DE7 J% q* f- B7 P0 Z: S% {8 q3 h% g
  43.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    + K, a: L/ Q3 n; G
  44.                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;6 C7 t. P1 P7 M' w1 {* l; S- N
  45.                 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    % Q# }5 f! E* [$ o$ c
  46.                 GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(ST_COM1_DE);
    " ^5 q7 a1 C% U
  47.                 GPIO_Init(SPLIT_DEFINE_PORT(ST_COM1_DE), &GPIO_InitStructure);" w3 y9 x; L2 D! D4 @. g
  48.                 GPIO_SetBits(RS485_DE);+ l; C9 M0 P8 w# i. k
  49. % c9 ~( ~1 K' [, L  h# |
  50.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    & B% o$ `! ~9 N# \) n) O
  51.                 RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
    / |  U0 y0 A5 y; r
  52.                 RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);7 k: A0 _7 U- d/ l
  53.         }! T  ~& \! C) g; `
  54.         else if (USARTx == USART2)
    1 ^( V6 V2 N( X( K! L3 F
  55.         {
    $ `% Y+ n7 r& `6 ]" P! P. b) g
  56.                 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);: E* ^$ f: K2 m& U; l+ q

  57. 1 Z3 _3 _* ~1 \) i
  58.                 // GPIO的公共特性! e/ G2 d' m8 e# ~9 ?: L8 R4 p
  59.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    5 g7 K8 f+ @0 C  @+ a

  60. 8 g* I: K) g3 U" c0 |* X6 e
  61.                 //COM14 v4 r, U1 j% N! P$ ^5 x# w5 j
  62.                 //USARTx_TX   GPIO_Mode_AF_PP
    5 _. I/ ~. I4 \  h
  63.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;& o: g1 E" r. B$ k
  64.                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    6 |- `7 Q5 F8 W4 T1 j* p
  65.                 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    " C2 {1 w- h0 T) i* }' \9 z
  66.                 GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(ST_COM2_Tx);
    ' Y/ e7 ?: n% M7 e- T' u
  67.                 GPIO_Init(SPLIT_DEFINE_PORT(ST_COM2_Tx) , &GPIO_InitStructure);' P$ i1 b6 m. ]- s, W! s% T1 i
  68.                 SetAF_COM2_Tx;//必须选择复用功能. l! q% K3 w/ }6 F* D6 T
  69. # g  q9 h, N) A" g# h+ Z$ K
  70.                 //USARTx_RX   GPIO_Mode_AF_PP & IPU
    ' ]8 a2 u) s' `, m* n4 n5 o1 i
  71.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;1 c8 d* O/ o$ D6 @) Y
  72.                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    $ w& e( F/ Q5 T$ F
  73.                 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    3 Y, x; G) a+ P8 E0 b
  74.                 GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(ST_COM2_Rx);. T% b# i) x$ G6 n- u
  75.                 GPIO_Init(SPLIT_DEFINE_PORT(ST_COM2_Rx), &GPIO_InitStructure);
    ' \0 ~2 H. R/ p  _- f: f
  76.                 SetAF_COM2_Rx;//必须选择复用功能/ M. s, j6 S4 O

  77. * N" G5 S" \9 i% f% v: d+ N0 C( ^
  78.                 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
    6 U+ ]# F: Z; P# y3 L
  79.                 RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE);
    1 Z" r* H' s  |4 y. u
  80.                 RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE);
    ; j6 r5 A5 S2 `% c2 K  H
  81.         }
    $ o+ D8 n, Z. N, C  p
  82.         else
    # y6 F8 P  t* q  _: u$ [7 y
  83.         {% P6 c0 A% W' m% f( `
  84.                 return pdFALSE;) y" w7 L: S) n/ X! e# i$ X0 @/ g
  85.                 //#warning "Make sure USARTx is exist ?"
    : L" W" l+ W3 r3 [: V
  86.         }- H# O- ]# `  J( k0 A

  87. ( ^& D: {6 ]# n. L9 B- a; m
  88.         /* now start init usartx info. */! }* C# T: k# q; Y% z; U
  89.         switch (parity)
    ; j1 Z; J! ]4 \  |7 Z
  90.         {
    * Y6 ^! T3 ]' |) a7 k- [2 G* F
  91.                 case 1://奇
    ) z. Y: B& X, e$ Z4 h$ ^
  92.                         USART_InitStructure.USART_Parity = USART_Parity_Odd;3 t& S! @' E6 }& p( @) T
  93.                         if (length == 7)
    # ~1 {1 A: `. `7 X" P3 ]- ~3 M( k
  94.                                 USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    7 U% A0 M: `1 T8 I' S# w- V9 W* v
  95.                         else
    + a- |% |# g# Z9 B  H: Y! M
  96.                                 USART_InitStructure.USART_WordLength = USART_WordLength_9b;
    / D2 x9 r" e' C- g) y
  97.                         break;3 o6 S# C4 Y1 }- K2 A+ J1 i$ t
  98.                 case 2://偶5 B# [, o4 P: \$ n/ W9 u
  99.                         USART_InitStructure.USART_Parity = USART_Parity_Even;
    # T8 A* ~) L4 d# G( k
  100.                         if (length == 7)! `* g6 d( m* T$ S% u2 D  o
  101.                                 USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    , d7 k! F1 T2 F( N$ [0 n* o( {
  102.                         else
    - v. G( ]" o) T+ M& w$ l, o
  103.                                 USART_InitStructure.USART_WordLength = USART_WordLength_9b;
    0 S3 ]& B3 O1 Q1 h7 f
  104.                         break;1 Q7 z5 c; U  o
  105.                 default://0无8位数据位( U; Q6 I4 t* I4 V7 g
  106.                         USART_InitStructure.USART_Parity = USART_Parity_No;: }. n" r# C) R; w; t
  107.                         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    4 h4 O' E: E6 Z9 _+ p
  108.                         break;. M7 x( n5 C- S* X  Q! k
  109.         }! X/ @4 K$ m; ?4 D& Y3 a. z- P# n

  110. 7 D# _: [8 w) E, ]8 e
  111.         switch (stopBits)
    & {7 c% Z! ~. P% s7 y" ^5 s( W+ K
  112.         {# {$ [7 Q* o  ~! e+ w4 c
  113.                 case 2:5 D6 i; s8 v+ V
  114.                         USART_InitStructure.USART_StopBits = USART_StopBits_2;) I4 L9 [  E# j, {1 g9 s! |
  115.                         break;
    2 @, P1 T2 G2 ]$ e9 F0 Z: ^" A0 }: v9 e
  116.                 case 3:/ U0 S* ]. T$ j
  117.                         USART_InitStructure.USART_StopBits = USART_StopBits_1_5;
    . T4 P. X, {. ]
  118.                         break;
    & ^8 {- b. X4 M
  119.                 #if defined  (STM32F051) || defined (STM32F042)! a' \& b) q$ }# s2 U0 q
  120.                         //null
    - S% J3 ~4 k: a% p# N. @
  121.                 #elif defined (STM32F100) || defined (STM32F101) || defined (STM32F103)# w! Q; g+ S, }4 z1 t( q8 S
  122.                         case 0://保留STM32F05不支持,STM32F10支持, B9 h, w0 S2 G# Z% }
  123.                                 USART_InitStructure.USART_StopBits = USART_StopBits_0_5;
      h$ |5 i5 V' r2 q
  124.                                 break;" W* @; s, A% o; u& E
  125.                 #else
    ; F/ O# {! z! s' z. N8 x' ]
  126.                         #warning "Make sure needn't define STM32F051 etc. ?"
    $ \: B1 @% q8 T
  127.                 #endif2 D& \4 u+ L, }3 l2 ?2 Z/ r
  128.                 default://1
    - X3 O3 t7 J8 d# M4 |* L' f7 j6 p
  129.                         USART_InitStructure.USART_StopBits = USART_StopBits_1;
    + R0 N; T) l7 w  w# l
  130.                         break;
    - {/ K6 P1 Y2 s" J0 G0 U
  131.         }& z8 G2 Z( j7 I* C7 P, x
  132. ) t1 [0 \" |' x3 \* q! T
  133.         USART_InitStructure.USART_BaudRate = baudRate;  ~; l7 ?9 F& m  ?" n3 k: B2 m- b
  134.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;: L# ]9 {$ B: L, K% {
  135.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;# E7 u  W- W3 ]3 ^1 K
  136.         USART_Init(USARTx, &USART_InitStructure);, I4 @7 \3 B3 J
  137. * G$ P3 D4 t% P8 n
  138.         USART_ITConfig(USARTx, USART_IT_RXNE, ENABLE);7 {" o) \0 u6 ~
  139.         USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);
    / e, n+ o3 g  A# m4 U/ M) A( a* v0 O
  140. ( D) D4 K1 u$ x. e2 o. y' E! L- K
  141.         USART_Cmd(USARTx, ENABLE);
    " b3 _& i* v7 u, z  _1 ?
  142.         3 W( F5 }: ^6 c; Q- @
  143.         return pdTRUE;
    7 G, J7 s$ O$ {6 U# q2 P
  144. }
复制代码
1 p, n/ A- S! h) \# v0 e* c" _
Dylan疾风闪电 回答时间:2015-1-7 20:35:32
发送和接收就是写、读数据寄存器xDR(x=T,R, ' ')。5 Y  P+ C3 G. J3 z
  1. /**% g4 A# b: Q: D% m* x7 i5 n
  2.   * <b>串口向外发送数组。</b>
    / G' V% @2 {) L5 D* b
  3.   * @param  USARTx      COM外设
    9 b5 J- F) R! x0 ~" u, u% P
  4.   * @param pBuff        数组, G3 f2 q0 k8 {# U! m- L
  5.   * @param length       数据长度
    , a: Z7 T6 ]9 P% X. m
  6.   * @version                        v2.0(2014-11-22)" x! P5 L8 @9 K( W" s- G
  7.   * @author                 Dylan( `4 ?  v* x- ?% z; x$ W5 s
  8.   */! ?1 S, d* _9 K- ^# ]! D, F+ D4 a, X
  9. void COM_SendBytes(USART_TypeDef* USARTx, uint8_t* pBuff, uint8_t length)6 D$ _2 G- ?; O1 Z3 W2 F7 a7 U
  10. {
      M; C3 Q9 J% K; y0 w
  11.         uint16_t srValue = USARTx->ISR;
    ! k8 Z6 f* X5 f. a" A6 D+ m
  12.        
    1 e- @5 f0 x# L. e& Q* e& Y
  13.         while (length--); Z3 F. B; O7 u0 e7 p" O: v" e
  14.         {                        " _3 u3 x$ M/ P  V
  15.                 while ((USARTx->ISR & 0xC0) == 0);//等待数据被移到移位寄存器,或者数据发送完成。6 _: m5 l5 c6 T  `' T
  16.                 USARTx->TDR = *pBuff++;' Q) E) Q( i. i& \' h7 N
  17.         }( L" [# j  l3 p6 H
  18. }
复制代码
* H& T9 y; O) _6 W) i) r
4 u6 s1 L/ }, I8 Y5 h4 B
netlhx 回答时间:2014-12-21 11:50:45
NUCLEO的虚拟串口使用的是USART2,可以参考原理图,上面写的很清楚
zhang_123-55168 回答时间:2014-12-21 11:21:15
本帖最后由 zhang_123-55168 于 2014-12-21 11:24 编辑 " ^$ G+ I( v$ R6 b8 X) Y

) x# X& I$ b/ H: T* e基于cube代码生成的工程也可以使用了。
6 q9 S! U5 {( U# s! z串口直接发送,灯闪烁。
wamcncn 回答时间:2014-12-21 12:13:17
你是说例程 NUCLEO串口发不出数据?
lkl0305 回答时间:2014-12-21 15:08:45
板载的串口用的是USART2,这个的确是刚上手时的问题啊。
晓枫VS枯叶 回答时间:2014-12-22 12:19:11
F0的cube库里面有USART的例子,楼主可以打开看看!
sirius65 回答时间:2015-1-7 17:08:23
新手不懂 先收藏学习了
cxtarm 回答时间:2015-1-7 17:28:46
什么串口程序啊,竟然这么大
大秦正声 回答时间:2015-1-7 17:35:50
我的uart1测试正常PA9, c' J( h5 G: @) K$ D  [& E
PA10
aderson 回答时间:2015-1-7 17:46:59
标准库表示可以用。。
taiyangshengqi 回答时间:2015-1-7 20:21:39
楼上说的很对,可以简化程序慢慢调试 确认问题
taiyangshengqi 回答时间:2015-1-7 20:22:05
楼上说的很对,可以简化程序慢慢调试 确认问题
万里-363223 回答时间:2015-1-8 08:34:25
还是不要太懒的好,看清楚程序先
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版