完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目标:通过串口助手发送数据后,单片机回传+1。
现象:没有进入中断服务函数 void Uart_Init(void) { P_SW1 &= ~(S1_S0 | S1_S1); //S1_S0=0 S1_S1=0 (P3.0/RxD2, P3.1/TxD2) P_SW2 &= ~S2_S0; //S2_S0=0 (P1.0/RxD2, P1.1/TxD2) //串口1配置 PCON &= 0x3f; //串口1波特率不倍频 SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x01; //选择定时器2为串口1的波特率发生器 //串口2配置 S2CON = 0x50; //8位数据,可变波特率,串口2只能选择定时器2作为波特率发生器 AUXR |= 0x04; //T2为1T模式 T2L = (65536 - (FOSC/4/BAUD)); //设置波特率重装值 T2H = (65536 - (FOSC/4/BAUD))>>8; AUXR |= 0x10; //启动定时器2 ES = 1; //允许串口1中断 IE2 |= 0x01; //允许串口2中断 } void Uart2() interrupt 8 using 1 { if (S2CON & S2RI) //接收标志 { S2CON &= ~S2RI; //清除S2RI位 recvdata = S2BUF; if(recvdata == 0x0A) { Uart2_SendData(0x0A+1); } if(recvdata == 0x0C) { Uart2_SendData(0x0C+1); } } if (S2CON & S2ti) //发送标志 { S2CON &= ~S2TI; //清除S2TI位 B_TX2_Busy = 0; } } void Uart2_SendData(u8 dat){ S2BUF = dat; //写数据到数据寄存器 while(!(S2CON&S2TI)); //停止位没有发送时,S2TI为0,一直等待 S2CON &= ~S2TI; //清除S2TI } |
|
相关推荐
3个回答
|
|
AUXR寄存器中设置定时器1是否分频,会影响到串口2,有遇到这个问题的吗
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
377 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
536 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
540 浏览 0 评论
950 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1403 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:15 , Processed in 0.454001 second(s), Total 53, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号