目錄:
1.PDG2設定
2.接線
3.程式
1.PDG2設定
開啟RX中斷
將P30設為OUTPUT ,使板子上的LED亮。
2.接線
HC-05的TX---->PB1
3.程式
概述:藍芽控制LED 亮,滅
char rx; //RX
void main(void)
{
//clock set
R_PG_Clock_Set();
//LED
R_PG_IO_PORT_Set_P3();
//UART
R_PG_SCI_Set_C0();
R_PG_IO_PORT_Write_P30(1); //一開始不亮
//開始接收
R_PG_SCI_StartReceiving_C0(&rx,1);
while(1){
if(rx=='O') //當RX接收到 O 時 點亮
R_PG_IO_PORT_Write_P30(0);
if(rx=='F') //當RX接收到 F 時 熄滅
R_PG_IO_PORT_Write_P30(1);
}
}
//RX 中斷
Sci0ReFunc() //接收到的字元放入rx
{R_PG_SCI_StartReceiving_C0(&rx,1);}
我想請問開啟RX是否不用其他的設定,
回覆刪除我按照你的下去開,很遺憾地開不起來
我開的是SCI1的,他沒有進到Sci0ReFunc()裡的中斷
試過直接用timer讓他強制進入也無法讓他接收,請問是甚麼問題呢
#define LED_D1 PORT1.DR.BIT.B1
刪除#define LED_D2 PORT8.DR.BIT.B0
#define LED_D3 PORT8.DR.BIT.B1
char rx;
void main(void)
{
//clock set
R_PG_Clock_Set();
//IO
//***********************************************
R_PG_IO_PORT_Set_P1( );
R_PG_IO_PORT_Set_P7( );
R_PG_IO_PORT_Set_P8( );
R_PG_IO_PORT_Set_P9( );
R_PG_IO_PORT_Set_PA( );
//Timer1
R_PG_Timer_Start_CMT_U0_C1();
//UART
R_PG_SCI_Set_C1( );
R_PG_SCI_StartReceiving_C1(&rx,1);
LED_D1=1;
LED_D2=1;
LED_D3=1;
while(1){
switch(rx)
{
case 0x30:
LED_D1=~LED_D1;
break;
case 0x31:
LED_D2=~LED_D2;
break;
case 0x32:
LED_D3=~LED_D3;
break;
}
}
}
//RX 中斷
void Sci1ReFunc(void){R_PG_SCI_StartReceiving_C0(&rx,1);}
想請問您信號發送的也是用手機APP嗎?
刪除我當初並沒有開啟Timer,
有沒有可能是您發送的訊號不正確,
我可能需要您發送訊號的方式,才可以幫您做出更多判斷
你好~
刪除我是利用藍芽傳送,透過AccessPort連上藍芽並丟資料
我也嘗試過指沒開Timer讓他抓取
發送訊號的方式應該是正確的
我有去做驗證!
但它可能是沒抓到rx的資料
您好
刪除我想我找到您的BUG了
你所使用的SCI
是R_PG_Timer_Start_CMT_U0_C1();
您是用C1
但是您的RX中斷
//RX 中斷
void Sci1ReFunc(void){R_PG_SCI_StartReceiving_C0(&rx,1);}
是用C0
不知道是否為這個錯誤
可以試試看將C0改為C1試試看嗎?
如果還有問題那我再想想
你好!
回覆刪除我試過但沒有成功
它確實有在進RX中斷
void Sci1ReFunc(void){R_PG_SCI_StartReceiving_C0(&rx,1);} C0->C1
這段確實有打錯已修正但結果一樣!
您好
刪除所以確認有進入中斷那請問能用Add Watch的方式看到rx數值是否有變化嗎?