完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
调试串口0收发数据,用调试助手发12345678,但接受到8个1,大神帮忙看一下!!
#include "LPC8xx.h" #include #include #define UART_BPS 9600 #define BUFFSIZE 64 #define tiME (3.5*10)/UART_BPS volatile uint8_t UART0_GucRcvNew; uint8_t UART0_GucRcvBuf[BUFFSIZE]; uint8_t UART0_GucRcvProcess[BUFFSIZE]; uint32_t Gul0Num; uint32_t Sen0Num; void UARTInit (void) { LPC_SWM->PINASSIGN[0] &= ~( 0xFFFF << 0 ); LPC_SWM->PINASSIGN[0] |= ( 4 << 0 ); LPC_SWM->PINASSIGN[0] |= ( 0 << 8 ); LPC_SYSCON->UARTCLKDIV = 1; LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 14); LPC_USART0->BRG = SystemCoreClock * LPC_SYSCON->SYSAHBCLKDIV / (LPC_SYSCON->UARTCLKDIV * 16 * UART_BPS) - 1; LPC_USART0->CFG = (1 << 0) | (1 << 2) | (0 << 4) | (0 << 6); LPC_USART0->INTENSET = (1 << 0); NVIC_EnableIRQ(UART0_IRQn); NVIC_SetPriority(UART0_IRQn,5); } void UART0_IRQHandler (void) { LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME; LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; if (LPC_USART0->STAT & 0x01) { UART0_GucRcvBuf[Gul0Num] = LPC_USART0->RXDATA; Gul0Num++; Sen0Num=Gul0Num; LPC_MRT->CHANNEL[0].INTVAL = SystemCoreClock*TIME; LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; void UART0SendByte (uint8_t ucData) { while ((LPC_USART0->STAT & 0x04) == 0); LPC_USART0->TXDATA = ucData; while ((LPC_USART0->STAT & 0x08) == 0); } void UART0SendString (uint8_t *pucData, uint32_t uiLen) { uint32_t i; for(i=0;i UART0SendByte(*pucData); } } void MRTInit (void) { LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10); LPC_SYSCON->PRESETCTRL &= ~(1 << 7); LPC_SYSCON->PRESETCTRL |= (1 << 7); LPC_MRT->CHANNEL[0].CTRL = (1 << 0) | (1 << 1); NVIC_EnableIRQ(MRT_IRQn); NVIC_SetPriority(UART0_IRQn,4); } /********************************************************************************************************* ** Function name: MRT_IRQHandler ** Descriptions: MRTÖжϷþÎñº¯Êý ** input parameters: ÎÞ ** output parameters: ÎÞ ** Returned value: ÎÞ *********************************************************************************************************/ void MRT_IRQHandler (void) { uint32_t i; LPC_MRT->CHANNEL[0].STAT = (1 << 0); UART0_GucRcvNew=1; for(i=0;i UART0_GucRcvProcess=UART0_GucRcvBuf; } Gul0Num=0; LPC_MRT->CHANNEL[0].INTVAL = 0; LPC_MRT->CHANNEL[0].INTVAL |= 1UL << 31; 关闭定时器 } int main (void) { SystemInit(); UARTInit(); MRTInit(); // GuiNum=0; // GucRcvNew=0; while (1) { if(UART0_GucRcvNew==1) { UART0_GucRcvNew=0; UART0SendString (UART0_GucRcvProcess,Sen0Num); } } } |
|
相关推荐
3个回答
|
|
系统时钟的问题
最佳答案
|
|
|
|
以解决
|
|
|
|
怎么解决的? 分享一下
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1825 浏览 1 评论
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之LED
810 浏览 0 评论
迅为RK3588开发板实时系统编译-Preemption系统/ Xenomai系统编译-编译Linux实时系统-单独编译1
496 浏览 0 评论
哇!5.2秒进入应用界面!Linux快速启动方案分享,基于全志T113-i国产平台
1152 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-移植前准备之git管理内核源码
588 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-28 10:24 , Processed in 0.488538 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号