TA的每日心情 | 怒 2019-11-19 15:34 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
调试串口0收发数据,用调试助手发12345678,但接受到8个1,大神帮忙看一下!!
9 {4 f/ P/ P8 ^. n- i
~, u! b6 A6 x1 P1 p9 \, a5 H#include "LPC8xx.h"
% p! A, C" N* Y( e8 s. I; Z#include <stdio.h>+ m- E1 |% |. V0 I# U1 P4 G2 d ~
#include <math.h>8 d4 F1 C/ Q# L( h
#define UART_BPS 9600
, z+ g' B# P, U4 S; g3 C/ C#define BUFFSIZE 64
6 @8 A9 T' k5 z5 u, ?# S; @#define tiME (3.5*10)/UART_BPS. O1 }4 I; I- I' L% Z7 r: g5 W: \( M
volatile uint8_t UART0_GucRcvNew;
: Y. v7 |/ |+ S# z, M7 o( puint8_t UART0_GucRcvBuf[BUFFSIZE]; 3 ?7 x- @, e; ^% U; B
uint8_t UART0_GucRcvProcess[BUFFSIZE];
+ M @, o3 ~% c" R7 euint32_t Gul0Num;
) h$ T- c; u6 Xuint32_t Sen0Num; 6 B2 W9 a" ~6 X/ _' Q; ^5 |
0 r4 ?- w2 d b1 u7 z
% d$ T4 f$ f f% z. u' y/ m, ]& O- {( l0 m
2 ]: @4 F+ [( u& @ P7 Y8 avoid UARTInit (void)
) l8 x6 P, z+ P{
2 W8 P1 M+ l4 F5 _; w3 a2 e LPC_SWM->PINASSIGN[0] &= ~( 0xFFFF << 0 );
% P" P& h* d) H9 D! d6 U LPC_SWM->PINASSIGN[0] |= ( 4 << 0 );
9 D" X! M! g! X: c: Z" t5 } LPC_SWM->PINASSIGN[0] |= ( 0 << 8 ); 9 E Z9 X( H) D6 D
& M) {/ h( X" B% w) u' o LPC_SYSCON->UARTCLKDIV = 1; . y" U! Q0 q0 I+ b3 T
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 14);
6 ]( f5 h6 S! g9 x( a4 S0 v7 b
, U) f6 d- ]- d. N LPC_USART0->BRG = SystEMCoreclock * LPC_SYSCON->SYSAHBCLKDIV / R, o% A J* V/ j [
(LPC_SYSCON->UARTCLKDIV * 16 * UART_BPS) - 1; % Z: _, _$ d5 C, o5 f1 W
LPC_USART0->CFG = (1 << 0) | 2 D- v& n( C0 G
(1 << 2) | ! `, F3 B% ^% U9 I* E# S" | x1 V
(0 << 4) |
3 Y- {! t) u/ w5 [6 M (0 << 6); I& o" K% @; v* w: k
" a. D6 O; R0 Y
LPC_USART0->INTENSET = (1 << 0); ! L2 ~0 q- `* w* x6 r$ E9 y+ u. s
NVIC_EnableIRQ(UART0_IRQn); 7 }, _& J2 P0 f: s6 d! u
NVIC_SetPriority(UART0_IRQn,5); 2 d- z- @! E2 `2 O; Y4 U2 Y
}
; c' }9 I% q: n0 c+ h8 Z1 U0 I; R1 `2 P' F: {) x/ Y
0 Q3 x5 Q' U& u% g6 S+ j- Y1 J3 g# O* B% N6 A
void UART0_IRQHandler (void)
; G9 F& {6 Z9 L6 _( b; T{ , {6 `$ A$ T; y t5 Z
LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME;
' W5 e# ?) a4 {5 P( E LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; a7 J) ~, K' I, V& p7 }3 |
if (LPC_USART0->STAT & 0x01)
. ^- ]. s7 o+ Q. p2 K2 N9 d2 p {
% }( Y9 t. T9 v, } UART0_GucRcvBuf[Gul0Num] = LPC_USART0->RXDATA;
, o2 h# g& M) R Gul0Num++;; v- Y6 F4 ~8 X- i. [
Sen0Num=Gul0Num;
5 c7 O0 U- ~$ t( b LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME; . T4 F5 X8 n0 l5 e
LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; 5 H7 w a% X: l# Y
# ~- f, i$ D9 M2 \$ X' ^4 ~% r
void UART0SendByte (uint8_t ucData)0 v- [, Q2 t# g0 Q
{, R2 Z' W* {% {
while ((LPC_USART0->STAT & 0x04) == 0); 4 H2 m. l+ Q, j& a
LPC_USART0->TXDATA = ucData;
. j6 J8 p2 [! R# i# q V; E while ((LPC_USART0->STAT & 0x08) == 0); 9 D# m, K, f3 ]0 [
} t5 b9 W/ Z% M+ [: f
& z) _9 F( y R4 Z* I+ r
5 @. ]: E6 ]2 y* K0 a' f; L
* G' C2 v+ e8 k# }' Z+ F4 Bvoid UART0SendString (uint8_t *pucData, uint32_t uiLen)8 k% R0 @" n# X) V% M+ M
{
! R, T# i; @8 c7 @ uint32_t i;4 D. H8 d' z7 w2 r9 V# X l
for(i=0;i<uiLen;i++)4 l( O% q0 B. f1 @0 C- Z
{! t& N; D2 Y4 E9 H5 S6 i
UART0SendByte(*pucData);
$ T9 I" y! W# j8 j2 @ }5 @: [! g. i/ M5 \ G5 T+ f. [5 ~% G2 w
}
- z: {6 v( G* _5 e. a $ C$ [, e. @1 t- }/ J
% R2 V6 E1 N; s0 g$ D2 K) hvoid MRTInit (void)& z1 O% ?/ H& L6 ?% q
{5 C" G, _4 e C5 t
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10);
) Z/ ]2 M+ o) f- |. P6 p LPC_SYSCON->PRESETCTRL &= ~(1 << 7);
+ b* N9 w8 j+ Z! F) Z, n7 h LPC_SYSCON->PRESETCTRL |= (1 << 7); 4 V1 j5 e) N# q4 r& s, Q
LPC_MRT->CHANNEL[0].CTRL = (1 << 0) | (1 << 1);
3 w) L6 M U. S# O5 Z5 H+ ]# t5 M NVIC_EnableIRQ(MRT_IRQn); s% I! ~3 u: R S
NVIC_SetPriority(UART0_IRQn,4);
7 Z6 j* Y+ f; Z9 z6 e% p( ?}3 H" S. i+ `! f$ Q
# @2 k- ~: b* n3 _0 Q/ `: f6 |
: N, M2 E9 u0 r* s: [( e/*********************************************************************************************************2 J: Q+ Z) A; J; ?& s6 Z; E6 ?4 b
** Function name: MRT_IRQHandler
0 e6 S+ l! _8 |7 [6 Z" g** Descriptions: MRTÖD¶Ï·tÎñoˉêy4 e6 _ f# _, G7 g
** input parameters: ÎT
- k' u8 c$ A6 m* n** output parameters: ÎT
/ l3 J7 |/ T' W! o% T7 F; z** Returned value: ÎT
q/ h. x4 ^2 \7 N a4 u' c*********************************************************************************************************/' N: S/ g* ]7 H: k6 U/ P: B6 t
void MRT_IRQHandler (void)3 F- @+ K. k- B! ]" Q/ M7 ^, ` _
{ 2 Q& G1 w& d1 R( u8 H
uint32_t i;
$ `1 F" D+ v% [4 O LPC_MRT->CHANNEL[0].STAT = (1 << 0);
N0 r' U" k4 g5 x* J4 M, N UART0_GucRcvNew=1; 8 l. L7 y. g( ^% ^; k
for(i=0;i<Gul0Num;i++)
/ i& P9 D/ D! l6 w( l- q$ Y {; E( h$ E9 |0 m$ d; M* }8 k' L
UART0_GucRcvProcess=UART0_GucRcvBuf;
& D: V1 ~2 j6 W l. H }
: N8 g8 L" J7 W" z Gul0Num=0;
" ?+ ^! B9 r7 \! V( t" P LPC_MRT->CHANNEL[0].INTVAL = 0; ; z- N2 L& u- k8 h* d
LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; 关闭定时器
" c9 j! }) J) U7 b! F2 {1 S}" ^! l8 W9 E1 ~ X
1 X3 [2 t: H. w) u' e- Z% lint main (void)- `* a; @5 A# _2 o' I* j
{
* z0 p/ i2 b5 y# l- q+ `7 G7 L. ]" ? SystemInit(); 8 S. l5 r" U. r# x7 \
UARTInit();
' c$ @6 I- [% R MRTInit();
8 ]% _" v$ s y5 R* H9 Q( y L// GuiNum=0;
z$ c: K' k# Y8 t. n1 T// GucRcvNew=0;( K( N8 k3 q, A2 d
while (1)
/ n+ L; c6 N$ l6 b* t9 L0 I {
}; f. D2 c; v" i+ y if(UART0_GucRcvNew==1)2 V$ b3 V1 ^; @/ X* ], P x
{8 o6 k8 q2 P( v" S- v
: q4 F( y$ d9 w+ c/ k9 [0 w UART0_GucRcvNew=0;
' i6 o* ]' S9 [* y+ o UART0SendString (UART0_GucRcvProcess,Sen0Num); , k3 L! S4 p+ X* b( V: |! Y2 O
}' f1 n8 \, k/ }' ?6 G
}8 H. R a, m. s" V; w7 X
}% T4 r' Y" j6 B- {8 o! G6 X
|
|