完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
代码:
void uart1_init() { GPIOA_SetBits(bRXD1); GPIOA_ModeCfg(bRXD1, GPIO_ModeIN_PU); GPIOA_SetBits(bTXD1); GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA); UART1_DefInit(); UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT ); PFIC_EnableIRQ( UART1_IRQn ); } __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void UART1_IRQHandler( void ) { switch ( UART1_GetITFlag() ) { case UART_II_LINE_STAT : // 线路状态错误 { UART1_GetLinSTA(); break; } case UART_II_RECV_RDY : // 数据达到设置触发点 break; case UART_II_RECV_TOUT : // 接收超时,暂时一帧数据接收完成 len1 = UART1_RecvString( Rx1Buff ); UART1_SendString(Rx1Buff,len1); SendToBle(Rx1Buff,len1); break; case UART_II_THR_EMPTY : // 发送缓存区空,可继续发送 break; case UART_II_MODEM_CHG : // 只支持串口0 break; default : break; } } |
|
相关推荐
2个回答
|
|
你的代码,实际上是进入了中断,只是你没处理,
你的代码如果只是这些初始化,在该外设其他寄存器是默认值的情况下, 其只会进入这个case: UART_II_RECV_RDY 而你却未作任何处理. |
|
|
|
首先,确保你的芯片和例程对的上, 并且硬件连接,是正常的
其次,你应该首先尝试官方例程的工程 EVT>EXAM>UART1 直接烧录里面的hex文件:UART1.hex 这个代码默认115200波特率 给其发什么收到什么, 在上面跑通后, 然后打开该工程,修改两个宏,即可实现中断接收,收到什么发送什么出来,波特率同样是115200, |
|
|
|
只有小组成员才能发言,加入小组>>
533 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2908 浏览 2 评论
2402 浏览 1 评论
878浏览 2评论
693浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
423浏览 1评论
537浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
820浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 08:57 , Processed in 1.250338 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号