早上好,社区的朋友们!
请问一下我在使用
R_UART0_Send_String((__far int8_t*)"\n\rChoose actions:(1)Update Boot area + App area (2)Update App area only\n\r");
发送数据时,单步调试的时候一切正常,
SDR00L = data; /* load character to transmit register */ 执行完后,STIF0 置1
但是在run程序的时候,只会发送第一个字符,STIF0一直为0 卡在while (STIF0 == 0)。请问为什么会出现这种情况呢?
黄工,在入门教程中,短接了rx与tx串口,但是中断好像没有产生,断点调试也无法进入,是什么原因呢??
是RL78么, 首先要EI(), 然后接收和发送中断都未屏蔽, 然后发送数据触发中断. 这些条件都要满足.
关于代码 和 设置大致是这样的,中断屏蔽是设置的吗,应该没有屏蔽,也调用了发送数据函数
用的是R5F100MG的板子
硬件
R5F00LE, txd0 <---> rxd0
变量定义:
/* Start user code for pragma. Do not edit comment generated here */uint8_t tx_dat[8]={0x0f, 0xf0, 0x00, 0xff, 0x33, 0x55, 0xaa, 0xcc};uint8_t rx_dat[8];uint8_t send_OK=0;uint8_t re_OK=0;#define TX_LEN 8#define RX_LEN 8/* End user code. Do not edit comment generated here */
主程序
void main(void){ uint8_t i; R_MAIN_UserInit(); /* Start user code. Do not edit comment generated here */ R_UART0_Start(); R_UART0_Send(tx_dat, TX_LEN); R_UART0_Receive(rx_dat,RX_LEN); while (1U) { if(re_OK == 1){ re_OK =0; for(i=0;i<TX_LEN;i++){ tx_dat[i] +=0x10; } R_UART0_Send(tx_dat, TX_LEN); R_UART0_Receive(rx_dat,RX_LEN); } } /* End user code. Do not edit comment generated here */}
中断
static void r_uart0_callback_receiveend(void){ /* Start user code. Do not edit comment generated here */ NOP(); re_OK = 1; /* End user code. Do not edit comment generated here */}
测试结果
会被卡在这一步 并且报错
在主函数定义的re_OK的全局变量在这里调用会编译不过, 我在r_cg_serial.h文件又声明了一次
使用的是硬件仿真还是simulator?
应该是硬件仿真
上面代码测试通过, 没有问题, 检查硬件是不是正常.
接收完成函数没有被触发,re_OK的值没有被改变,您觉得会是硬件上哪里的问题呢?
我短接了RXD1与TXD1 ,还是说这个板子不能自发自收呢
R5F100LE_uart_CC.rar
我的板子txd0 和rxd0直接短接, 使用上面程序, 正常运行.