TA的每日心情 | 怒 2019-11-19 15:34 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
调试串口0收发数据,用调试助手发12345678,但接受到8个1,大神帮忙看一下!!
6 l' t, a0 {4 E
8 ?3 f9 I' T+ V- z$ ?) a#include "LPC8xx.h"
T. H9 A% _& o9 H( o: t: ^0 ~#include <stdio.h>
; v' C7 K/ [' j) R#include <math.h>
! u, m* @2 f: X- _8 H#define UART_BPS 9600 : p6 f3 D0 O' v8 Q8 J+ J- A
#define BUFFSIZE 64
. Q( A5 v7 S5 `' Z# g#define tiME (3.5*10)/UART_BPS$ l+ @9 h. p$ A3 v
volatile uint8_t UART0_GucRcvNew;
7 o8 c. Q6 g( O: u: z: @uint8_t UART0_GucRcvBuf[BUFFSIZE]; 9 v- }# e, O( [
uint8_t UART0_GucRcvProcess[BUFFSIZE];
! g" R6 v5 v4 s: o: P5 z4 Muint32_t Gul0Num; " m8 I7 v& M* l, S# I3 r: F# w
uint32_t Sen0Num; . C, U/ Z6 v7 G3 l+ ~; B# a
1 X; P; i. K' [4 x0 s3 p- ^( C7 {6 F; t* A$ g
0 X$ w: J4 D* {. rvoid UARTInit (void)4 J8 E6 o8 p. Y* B
{
. U$ w8 \+ J N" a4 p: D LPC_SWM->PINASSIGN[0] &= ~( 0xFFFF << 0 );
8 H& W8 w- _3 z; q, Q5 d$ M D7 f LPC_SWM->PINASSIGN[0] |= ( 4 << 0 );
, Z' U1 }/ x# a0 B `# C) a LPC_SWM->PINASSIGN[0] |= ( 0 << 8 );
. L- r* F: ` z- ^
l% l3 q9 d/ m: l1 O LPC_SYSCON->UARTCLKDIV = 1;
* o1 p! ~8 f2 I$ y( n5 s) I1 a3 d LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 14); % H( J! Q# V d" ]( I: j" F
S8 V" P! H; z( _' y) Q. I5 l% H LPC_USART0->BRG = SystEMCoreclock * LPC_SYSCON->SYSAHBCLKDIV /7 [& {6 o* P" E0 g
(LPC_SYSCON->UARTCLKDIV * 16 * UART_BPS) - 1; " U( M5 ?3 c& F7 C- N
LPC_USART0->CFG = (1 << 0) | / T* D+ W6 l! L" s P
(1 << 2) | * r+ v! e# ^/ @
(0 << 4) |
0 F; c" A" [5 P/ X0 B. v5 Q (0 << 6);
2 ^$ t% H1 H. s! | $ j I8 `* I/ b) h# W
LPC_USART0->INTENSET = (1 << 0); 4 w4 e# [$ R! S) w& E
NVIC_EnableIRQ(UART0_IRQn);
6 ^+ z9 U8 \! D L$ w NVIC_SetPriority(UART0_IRQn,5);
5 ?7 _2 H* R6 {! |' \}
# C% r1 z6 ]% k; F: i
/ M2 J- o3 T& b8 D" P( h- C
( ?- ~& l& L: p/ w) s$ |5 H' R$ P
# W* G+ i! B5 G$ r* r) uvoid UART0_IRQHandler (void)
& R. O2 a2 L$ \7 y) Q{
5 S& y0 m; g O' V/ u b# } LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME;
/ l) |8 Q0 {0 J/ n! E LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31;
$ M! M' @* x, n! _4 Y) d# r if (LPC_USART0->STAT & 0x01) 5 V5 a1 {& x( K. ^+ Y3 H
{ / @6 b3 z3 R3 w
UART0_GucRcvBuf[Gul0Num] = LPC_USART0->RXDATA; 1 ?: K& J# f- j$ q7 j/ U
Gul0Num++;: }1 F. {2 r4 O0 O# }4 V8 ?
Sen0Num=Gul0Num;1 I; l. R( g* n k8 m
LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME;
7 l2 O) C- B/ z+ a. g LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31;
: B4 g, }+ ~5 Q( Z, A ^
/ O5 m& U8 c$ j; jvoid UART0SendByte (uint8_t ucData)9 }5 K) j2 K. |2 a; H6 w
{2 [: e4 Q1 C/ ]1 g/ Z
while ((LPC_USART0->STAT & 0x04) == 0); " Z# Y% f' P( v0 q! k* ]
LPC_USART0->TXDATA = ucData;
% i7 z, v: Q! s while ((LPC_USART0->STAT & 0x08) == 0); 1 y: a! Y' E. p% E! p4 X: a+ M
}) a8 K' k- I' @( b% H+ k
0 f+ D! t: F* j* j
{+ c" e7 U4 S# h0 } B, j8 `6 ^& {* D* g) B4 P
void UART0SendString (uint8_t *pucData, uint32_t uiLen)! @9 S$ z6 s8 E4 U$ c
{
8 b" p& Y7 o" l' a& C& P uint32_t i;, b, b! J, t: I! O: c7 ~: c1 Y2 F
for(i=0;i<uiLen;i++) a6 |5 h' f0 J0 J6 a
{
5 c$ \" A' d6 E; c3 {# U UART0SendByte(*pucData);4 N& c1 V+ x6 F% l5 c' o
}+ q6 [5 \0 @& F1 r$ z
}
7 N# H" S7 w. P9 i% Z ( F2 Z% V* U& T9 o
# q7 [: m8 Z0 j) L; k. z. L/ _void MRTInit (void): ?4 g) t$ B( r, B
{( G; j* G* m# \1 |
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10); % Z4 H- Z* ?* X' p7 G
LPC_SYSCON->PRESETCTRL &= ~(1 << 7);
2 [/ \7 x7 `: g- `/ x$ Y0 e LPC_SYSCON->PRESETCTRL |= (1 << 7);
; K: o- S) m9 R, D/ H5 w! H LPC_MRT->CHANNEL[0].CTRL = (1 << 0) | (1 << 1);
% _9 W0 k& z, T( L/ ~, M NVIC_EnableIRQ(MRT_IRQn); 1 w; M n8 J; z p" Y2 F
NVIC_SetPriority(UART0_IRQn,4); ( i) P6 H/ H" \$ o$ V) s% q
}
8 c" \/ |- @ R+ E4 N/ L9 \' u/ F% I) y2 Y( K& _
) R3 D8 Z0 S* Y$ C! ?4 q, {6 q/*********************************************************************************************************
6 B, M2 d$ w3 J1 r1 v** Function name: MRT_IRQHandler
\$ {9 m6 H0 o/ ~+ V1 D! J* @** Descriptions: MRTÖD¶Ï·tÎñoˉêy
& L/ B$ ]! k3 |( P** input parameters: ÎT
! Q8 n; Q" P+ M; T( u, c* h L2 F** output parameters: ÎT
% q- \5 k+ b' f; j- X- e** Returned value: ÎT: x9 W- _2 i% s' G- N
*********************************************************************************************************/
! f- ^5 p) T: C. ?void MRT_IRQHandler (void)
( @& v% y8 r6 l1 h{ ; [0 v- b. a! [; b
uint32_t i;% T* z- i1 i r1 [4 c( R1 |1 k
LPC_MRT->CHANNEL[0].STAT = (1 << 0);
0 a* e( f% U$ Y9 n5 b9 V" R' v% f UART0_GucRcvNew=1; ' P6 K/ Z+ A/ s/ h
for(i=0;i<Gul0Num;i++)
' N6 I6 _0 V; A2 ?. y9 Q8 c/ l" w( o# h {% x! n9 X$ ~$ _4 q5 h
UART0_GucRcvProcess=UART0_GucRcvBuf;( s3 k8 N0 J$ Y0 m6 M/ i' d: \
}6 L# P0 o, F% a1 p8 I
Gul0Num=0; * o$ e9 ]* W3 u# I, U/ S$ O
LPC_MRT->CHANNEL[0].INTVAL = 0;
Z* F0 K& ~2 |1 }, S LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; 关闭定时器
5 f9 m4 t Y F; [* R6 l0 F}
3 _% r$ z+ B Z* C1 B' H1 W- Y2 L, Q/ M/ Y1 o
int main (void)
7 n- D; {1 z5 g6 e3 |; L{
, x: _; H5 u5 @& h2 ~ SystemInit(); " w+ @8 J7 u- h# R3 D
UARTInit(); . Z, Y6 d/ G g5 a7 \- ?& G
MRTInit();% N1 H, O1 `- V& k! L6 s2 A$ L
// GuiNum=0;7 d# u( V" u( u1 e! U4 r; o+ v
// GucRcvNew=0;
2 u. A# g9 q8 q5 C while (1)' ?. C/ T- U" p0 M% s! F; v& V/ I
{+ P3 U& [' G( B- g5 {7 ]# w- M
if(UART0_GucRcvNew==1)
! G% O7 u, e6 {1 q# @0 M' [# M {) v0 @+ G1 {, \$ f/ `
" e! f4 p/ O, c# l3 t6 q; @
UART0_GucRcvNew=0;) K. L. G. @7 a0 \" u% N7 ?
UART0SendString (UART0_GucRcvProcess,Sen0Num);
, J/ Z& k+ d- W- L8 _% s }" i" W2 T0 J4 ]: H% o
}4 P7 y# U$ H7 V$ z3 b6 {
}: S) e+ F& @( j
|
|