TA的每日心情 | 怒 2019-11-19 15:34 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
调试串口0收发数据,用调试助手发12345678,但接受到8个1,大神帮忙看一下!!3 i7 w5 X; T# ]
* ?6 v$ e6 o0 [- |2 }/ M" a$ B#include "LPC8xx.h"
" W# i5 e7 o5 W! h#include <stdio.h>( q* \4 V7 l! q& \; o
#include <math.h>$ \5 K( Z! p2 |) r6 m, O& [
#define UART_BPS 9600
+ U# Z# ~$ F8 b& r, n' ?#define BUFFSIZE 64
) B! d7 |; j a- E# z0 ^#define tiME (3.5*10)/UART_BPS
# v- v c" l5 i) b$ J& }( K! Nvolatile uint8_t UART0_GucRcvNew; 2 i1 Y7 {/ a0 f4 B0 J8 `: R# `4 E
uint8_t UART0_GucRcvBuf[BUFFSIZE];
0 i$ N( I& [; }' Suint8_t UART0_GucRcvProcess[BUFFSIZE];
) c# P1 J- @8 t; v9 N; |; ]/ {uint32_t Gul0Num;
8 S7 c6 ^- A6 s" Tuint32_t Sen0Num;
3 ]! E% ?1 _) f. G/ V6 y# c( ~: `# c( Q, c2 H4 q* J' y# w6 v4 l
8 _+ s+ ^3 ]" F( a" P4 X3 Y, k" U4 D3 U- i/ N a+ d0 o
void UARTInit (void); T& U8 K' A- Y. h, m5 t
{
* s1 H# C# } E LPC_SWM->PINASSIGN[0] &= ~( 0xFFFF << 0 );9 `, A9 ~7 j* a
LPC_SWM->PINASSIGN[0] |= ( 4 << 0 ); 8 C) S. i5 C7 ]5 h; \
LPC_SWM->PINASSIGN[0] |= ( 0 << 8 );
" i- ~! j2 `5 B7 G ! E& q, `9 T {
LPC_SYSCON->UARTCLKDIV = 1;
1 Z( h8 |" ?% I$ ~1 w( x4 R0 G8 Q; G LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 14); " ]! u4 K* ~ r* Z& @% o
* b6 i1 ^# j0 }% e; W. H LPC_USART0->BRG = SystEMCoreclock * LPC_SYSCON->SYSAHBCLKDIV /
4 e8 G' H1 O3 _! ?: I$ F8 E (LPC_SYSCON->UARTCLKDIV * 16 * UART_BPS) - 1; / Z% l ^- M: {* F
LPC_USART0->CFG = (1 << 0) |
9 @+ F, O; H# o) u; C) z& l (1 << 2) | / p* y' V! V h$ y x
(0 << 4) | , R) S8 Z6 I+ a
(0 << 6);
; a k8 G5 w* J% W 0 ^' A3 s8 m8 t3 p/ U1 Y5 q( p
LPC_USART0->INTENSET = (1 << 0);
' `8 V0 f- a! m4 t9 C9 ` NVIC_EnableIRQ(UART0_IRQn); # Z* d U8 `, ?" n! j0 _
NVIC_SetPriority(UART0_IRQn,5);
" A/ }! m# P7 L- t( z+ h: v, a}2 L3 O; B$ Q4 ~/ Q
- {! z T8 i2 E, J3 b9 b7 k m! A4 Y0 ?
$ Z' T6 n7 x' K* S( _
) \# a- w. C: E* x: uvoid UART0_IRQHandler (void)
/ h% R. u" m' u0 t$ I{ |+ e7 d$ L$ P+ n# H
LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME; a. T$ Q3 a+ ?! d, x
LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31;
9 |4 G5 A9 x. Q) Z- T; U* O! i- m if (LPC_USART0->STAT & 0x01)
! d4 ]. D& O$ S K" |1 s {
( T' E& p/ |2 x3 h UART0_GucRcvBuf[Gul0Num] = LPC_USART0->RXDATA; * i& i- i" b+ }
Gul0Num++;5 g. g+ _) q: n8 E
Sen0Num=Gul0Num;% e5 t9 k2 g. w4 u/ ]5 y/ e
LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME;
; O2 M7 U6 }+ X& p1 j LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31;
! |0 Z8 L4 Q. B6 h: }
e9 b* J' q1 _% p& Cvoid UART0SendByte (uint8_t ucData), L* X% q& }! d( h
{3 T; a$ }. Z! P' T( b) v
while ((LPC_USART0->STAT & 0x04) == 0); 7 E. b: c- E& C5 l( `" p! w2 ?, T
LPC_USART0->TXDATA = ucData;
8 k& G7 t9 y. Q9 L while ((LPC_USART0->STAT & 0x08) == 0); 9 A7 {' k6 B1 r+ A4 ~
}4 r1 o$ }6 m( H$ Z0 j
9 b' G- }( u A5 Y1 ]0 P7 k
/ S6 E# n \0 s% n
# [& @: _$ D: M1 [# Pvoid UART0SendString (uint8_t *pucData, uint32_t uiLen)/ Q @- X6 B% Y, u" B0 A$ ~
{! o5 {) h7 r7 b6 T
uint32_t i;
- N3 P4 _% _, ]9 w8 z for(i=0;i<uiLen;i++)
7 N" s' ]$ W7 E8 [3 d; s: Y. {% } {
3 C6 r3 R8 H, K! N0 d UART0SendByte(*pucData);
- K% k& a( u+ B7 P1 x+ G }% L% I' n7 s& {
}
* E: t6 m3 g6 z w" O! U & K% }6 z9 a* { ~8 w/ R5 V
# v1 _1 S$ T: D6 a; G, ?
void MRTInit (void); |8 m9 `+ N1 ~! K( \ f
{! Y7 T' [$ g" V* b
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10);
$ S( t# }" T- E1 f; r" ?& X% w8 Y LPC_SYSCON->PRESETCTRL &= ~(1 << 7); 2 _( V f5 `0 C$ [2 }- b
LPC_SYSCON->PRESETCTRL |= (1 << 7); $ q1 L) k0 v) y
LPC_MRT->CHANNEL[0].CTRL = (1 << 0) | (1 << 1);
+ A0 o' k' _: N. _6 b NVIC_EnableIRQ(MRT_IRQn);
9 n. d# f2 x6 Y, p } y- S6 Q/ O& A8 Y+ \ NVIC_SetPriority(UART0_IRQn,4); 8 ^, J5 x- L. M+ j2 g
}
9 N7 }& f2 @; i9 P3 W; F$ J8 J) r; g- \2 @0 R& [$ d
3 `" W: Z0 H1 i. T2 q" M
/*********************************************************************************************************
7 w0 ]3 W5 R* v8 d# G** Function name: MRT_IRQHandler/ @9 ]/ b d7 {
** Descriptions: MRTÖD¶Ï·tÎñoˉêy
p) F6 I" e. ?+ Z5 }** input parameters: ÎT8 ^8 k- {; f4 H9 v" \0 J. D
** output parameters: ÎT
3 D& N. |! `: ^9 i- _ j9 O** Returned value: ÎT2 F+ u% C* t# T. g+ h- V; i
*********************************************************************************************************/- Q5 `* E! [: W7 ?! q$ q
void MRT_IRQHandler (void)
$ R' ]! m7 N/ v% `! n{
$ Q5 Y9 b6 K* Y uint32_t i;
$ h2 B1 N1 I+ R! S; q* _ LPC_MRT->CHANNEL[0].STAT = (1 << 0);
3 s9 Z/ Z. T1 z2 [ UART0_GucRcvNew=1;
6 l5 Q5 c- h3 F for(i=0;i<Gul0Num;i++)- f) s: v( c- N
{0 m8 _4 i* h* @- _
UART0_GucRcvProcess=UART0_GucRcvBuf;
; A4 j0 J( x* U4 m" l }
8 x6 C' t# U) j7 o/ \7 \* v Gul0Num=0; / i3 \7 j, [" Q* Q) }
LPC_MRT->CHANNEL[0].INTVAL = 0; . s& |7 T& G# Y3 x9 \
LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; 关闭定时器& X. }$ ]) \5 k& L6 H
}) G5 r+ t4 p; [! \6 |
* z" A) r/ N& q0 T+ Cint main (void)+ ]7 k; P1 Q0 J; Y" Z2 O. W7 t0 Q+ J
{( @+ b7 ~4 @# ]: I2 T
SystemInit();
; W( J( a% M( j" ` Q8 p! u9 T UARTInit(); 0 M$ N/ m6 ]& E4 ~4 d
MRTInit();$ U7 s5 h8 @% _6 M. d9 A
// GuiNum=0;4 J; F6 V( g; r6 @6 Y2 h9 M
// GucRcvNew=0;
: T7 k- n7 C" v4 ` while (1)
# U# c r/ l# i& W {9 l% Y2 ]7 P8 Z; f, ?( i
if(UART0_GucRcvNew==1). ?0 j" m/ D9 W7 o- a
{
2 F- q$ M6 p9 C- e( e A2 V / t4 G9 I* I0 z+ k7 h* h4 x! V) z
UART0_GucRcvNew=0;
9 r: j% ` a2 J J4 I3 A8 o% }- ]) [ UART0SendString (UART0_GucRcvProcess,Sen0Num); * n/ Y# a( Z1 ^6 x0 _# z ~
}
, ^( h: W0 Q. A9 x" S9 w }
) T& u7 B: B! t}+ b8 F1 A0 n; f; a9 L- ?
|
|