完善资料让更多小伙伴认识你,还能领取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个回答
|
|
系统时钟的问题
最佳答案
|
|
|
|
以解决
|
|
|
|
怎么解决的? 分享一下
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式-ELFBOARD ELF 1外设扩展硬件分享第一期
774 浏览 0 评论
2147 浏览 0 评论
1268 浏览 0 评论
1548 浏览 0 评论
采用NSA2860X芯片,采样压力传感器的电压,采用IIC总线与STM32F103C8T6通信,问题:采用的数据一直是FFFFFFF
2533 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-21 23:19 , Processed in 0.636617 second(s), Total 77, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号