TA的每日心情 | 怒 2019-11-19 15:34 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
调试串口0收发数据,用调试助手发12345678,但接受到8个1,大神帮忙看一下!!
6 V, E4 W0 V4 [# o6 k) z+ Z& P
h. M1 Q4 m: C8 H7 s! f8 I) U( V! C#include "LPC8xx.h") b& A: R% f- E
#include <stdio.h>; T. u7 h/ C3 C4 _
#include <math.h>/ m9 v/ e8 ~9 E' H, e ]
#define UART_BPS 9600
$ K. N4 c. g% p- q+ G: j+ l0 I#define BUFFSIZE 64 7 o3 L" P) O7 B: M. s
#define tiME (3.5*10)/UART_BPS
5 C$ ?, J7 M" |/ C t. y7 F- \+ ovolatile uint8_t UART0_GucRcvNew;
; L# G* e2 ^( I; r8 ouint8_t UART0_GucRcvBuf[BUFFSIZE]; 0 F/ K5 B& `! M3 P
uint8_t UART0_GucRcvProcess[BUFFSIZE]; / s8 D9 J1 W: _( h
uint32_t Gul0Num;
2 Y' ?: m$ p/ j: z* a; ?" w' Ruint32_t Sen0Num; f9 w! A8 O# Q/ Y" o) O
% U H/ D5 t- {7 _
8 |) }5 d1 E1 t7 G# h+ S+ o o1 m( o! d1 ?$ h( z
void UARTInit (void)( Y/ F) [" _$ s6 _( N9 T
{
/ Q' o3 m& T! I) _: h4 r) V7 V( i LPC_SWM->PINASSIGN[0] &= ~( 0xFFFF << 0 );
* g$ e7 a& P( m( C7 i LPC_SWM->PINASSIGN[0] |= ( 4 << 0 );
% e7 ^# \+ [4 \! p) S: Q# G- c* U LPC_SWM->PINASSIGN[0] |= ( 0 << 8 ); 7 e: g# _$ r5 R+ ^% { p
9 u: E% J/ Q1 Q+ x* N9 r6 I1 S
LPC_SYSCON->UARTCLKDIV = 1; 8 L( W: c; b& r( D6 f0 V" i
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 14); B7 _) A( y) ^) @
0 o6 c0 r+ n6 d+ C1 N
LPC_USART0->BRG = SystEMCoreclock * LPC_SYSCON->SYSAHBCLKDIV /5 ~6 f0 @+ I3 O8 W1 e
(LPC_SYSCON->UARTCLKDIV * 16 * UART_BPS) - 1;
1 k: ]% _- x" Q+ a LPC_USART0->CFG = (1 << 0) |
1 \: F2 d+ `# O% F3 z, E (1 << 2) |
& H# w: f3 \2 U0 m (0 << 4) |
! q/ s4 g5 v. J (0 << 6);
( [0 E9 i8 }6 L/ ?" p. w; k- F
' }+ P. G3 H, T+ { LPC_USART0->INTENSET = (1 << 0); ( a. j! U; ^/ ]4 H) T6 ?0 k% F
NVIC_EnableIRQ(UART0_IRQn);
& l+ t$ t& ~ X* S& m' A NVIC_SetPriority(UART0_IRQn,5); 7 Y8 V* U. \% r
}9 d* }) O: s3 [0 q/ o. Q% L+ C1 z
9 g/ S& V5 O# E5 T- p* a3 H# H7 T- o8 G# X
( M* k4 g- L# C1 T. }
void UART0_IRQHandler (void)) o0 M, ?8 @. m y
{
9 w, m, E) a. w% E$ }0 i LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME;
% L! n' l' S' V+ V LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; + }* ]6 L) }- G4 z, o) w
if (LPC_USART0->STAT & 0x01) 0 I7 Z/ l0 a# G9 ]8 |6 I3 f+ ]. k
{
& @" w7 V# u3 G UART0_GucRcvBuf[Gul0Num] = LPC_USART0->RXDATA;
6 d9 n$ a: {1 I) S: a$ r: B Gul0Num++;
: D+ e5 O( p5 K* D Sen0Num=Gul0Num;
/ A" K7 v9 A1 g! f' C LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME;
" R+ G. }7 R H* f LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31;
+ l0 r% y9 w0 z: o; ?' T* w! J
4 P' u: Y! r% Z' J. l* l, Qvoid UART0SendByte (uint8_t ucData)
) }+ Z1 s; r* o' m% m8 E{3 k6 F3 c/ M. h) R, U
while ((LPC_USART0->STAT & 0x04) == 0);
9 Y7 ?7 [0 X0 U: q/ s( T) c LPC_USART0->TXDATA = ucData;
6 _0 e! h5 y2 J' V while ((LPC_USART0->STAT & 0x08) == 0);
0 u2 d5 ?4 {1 s8 K}( U+ @5 I s: Q- y8 E2 k3 J- o
( k! g) X, Q6 H' o
5 F& A! B8 t5 A- z3 E5 q" H, m: ?! J0 f: F' ^ e6 x$ f
void UART0SendString (uint8_t *pucData, uint32_t uiLen)
: n5 r( \. P; K) q$ I{
4 y1 |" I" K3 ?$ ~+ v uint32_t i;( F$ Z& F7 i# M ?+ E% k
for(i=0;i<uiLen;i++)
- g) E2 T7 L# n( F% [' @- T% r' F- z {# H+ M' a+ q! r3 r, l
UART0SendByte(*pucData);* Q0 y# H$ B& V% J' t8 d
}
' j, l* w4 {" r' X) k2 A4 e}
0 }: h$ b2 b* a7 q9 `
0 z3 i5 l# {0 W: `4 l7 ?) p. ~
* p2 Z: o8 |/ {void MRTInit (void)
5 c2 R" p9 D5 E& B) W, J{
- |4 ^# y& ~) w. y6 W m LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10); % e$ J( j* l5 a" f
LPC_SYSCON->PRESETCTRL &= ~(1 << 7); 7 W# _2 f5 l v6 ]( t
LPC_SYSCON->PRESETCTRL |= (1 << 7); ! T6 a# y* Q# i) x9 Z- D A
LPC_MRT->CHANNEL[0].CTRL = (1 << 0) | (1 << 1); ; A. ~# @' f6 v6 a g0 o7 B
NVIC_EnableIRQ(MRT_IRQn);
8 z3 M& O! r; H( }2 \; I NVIC_SetPriority(UART0_IRQn,4);
) s; Y$ D2 |1 c$ Y3 z}
* A" [5 |5 X& N9 S9 L' u# `, \9 F) K j# F: c3 }0 R9 C# _/ |
4 o. B8 ]3 `, z. |3 |6 B/*********************************************************************************************************0 p! [4 d1 x, [ T$ \ P
** Function name: MRT_IRQHandler
) x" e* z; e) e* |0 d** Descriptions: MRTÖD¶Ï·tÎñoˉêy
) V3 k4 C7 k0 v8 h** input parameters: ÎT
' r7 w* _0 J2 Y& P) ~** output parameters: ÎT
f8 x% n* P! G** Returned value: ÎT$ }& k8 C b4 L) @6 P! @
*********************************************************************************************************/; I" n& T6 D& v( ], \8 [7 @9 o
void MRT_IRQHandler (void)
, J5 J3 s( L1 y3 a7 l; X: d{ ( |/ P8 b+ a3 z6 n5 N( Y0 f8 {
uint32_t i;
/ t; J( J$ m# O# f, ~6 ^ LPC_MRT->CHANNEL[0].STAT = (1 << 0);
1 n- @3 P3 a& a8 B) m Q UART0_GucRcvNew=1; 7 Z- o- m7 U k; y( y* h5 L" ?
for(i=0;i<Gul0Num;i++)
% h( V3 w1 W$ U+ D; n+ } {
4 z( u, V" {0 i: g; e! s UART0_GucRcvProcess=UART0_GucRcvBuf;$ y- ^8 y% Q: s9 W" o
}8 c0 A, Q7 A% |- K3 h' v8 z3 c
Gul0Num=0; * x- w4 k$ C4 w: s* {) @
LPC_MRT->CHANNEL[0].INTVAL = 0; 2 a9 L1 o) f) ]
LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; 关闭定时器
" T- t( x, t1 \* n7 n}
/ n3 P2 S8 y! s7 K& z# \
4 i- f- t5 u" k8 K( h2 xint main (void), X: P1 h' ?3 {: ]0 a: h
{) I: V; h$ {$ v5 H
SystemInit(); ]* @6 X3 A8 a" U5 W" j- l# t4 Z
UARTInit();
& l4 Y C8 n& j8 ?' g/ G6 N MRTInit();
+ e, C- e4 }3 T7 @8 J// GuiNum=0;
- B9 p9 ], M& O+ b1 K6 A// GucRcvNew=0;
) p9 p8 |" |% J$ p- B& b" H while (1)
; t, g8 h7 D O, E; g; a {
+ U: I7 l/ t _0 o7 C2 G7 [6 X: J4 y if(UART0_GucRcvNew==1)
/ u9 d( k) ?& t ]3 ~0 w! z; q3 W {
9 L/ B; e% Z( M/ s 3 m$ J6 M; V+ A: e! a
UART0_GucRcvNew=0;
4 i4 R' h- q- Y, h8 m% O% ?$ W UART0SendString (UART0_GucRcvProcess,Sen0Num);
4 x9 u: C6 ^- x- [. {% L( V }9 ^( Q3 u9 S1 ]) N0 ^. e
}
* ]; H% q/ ~% [3 z' t}
5 J, s( z. [ V8 C' b; |6 @# A |
|