Zynq Xuartlite

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

//通过串口输入数字点亮对应的小灯
#include "xparameters.h"
#include "xuartlite.h"
#include "xuartlite_l.h"
#include "xil_io.h"
#include "xil_printf.h"
#include <xil_types.h>
#include "xgpio.h"
XUartLite puart_lite;
XGpio pl_sw;

void PL_SW_INIT();
u8 status;
u8 recv_package[8];
u8 send_package[8]={'i','n'};
u8 count;
int main()
{   

    PL_SW_INIT();
    XUartLite_Initialize(&puart_lite,XPAR_XUARTLITE_0_BASEADDR);
    
    XGpio_DiscreteSet(&pl_sw,2,0);
    XUartLite_Send(&puart_lite,send_package,2);
    while(1)
    
    {   
        count=0;
        XUartLite_Send(&puart_lite,send_package,2);
         //XUartLite_Recv(&puart_lite,recv_package,2);
         //while (count<2)
         //{
         //   if(count==0){XUartLite_Recv(&puart_lite,recv_package,2);}}
         //   if(count==1){XUartLite_Recv(&puart_lite,recv_package,1);}
         // XUartLite_Send(&puart_lite,recv_package,2);
                // 等待并接收第一个字节
        recv_package[0] = XUartLite_RecvByte(XPAR_XUARTLITE_0_BASEADDR);
        
        // 等待并接收第二个字节
        recv_package[1] = XUartLite_RecvByte(XPAR_XUARTLITE_0_BASEADDR);
         //XUartLite_Send(&puart_lite,recv_package,2);
       
         
         u32 led_control=10*(recv_package[0]-'0')+(recv_package[1]-'0');
        //xil_printf("%u",led_control);
        XGpio_DiscreteWrite(&pl_sw,2,0);
         XGpio_DiscreteWrite(&pl_sw,2,led_control);
         
        

        //XUartLite_Send(&puart_lite,recv_package,2);
        //XUartLite_Send(&puart_lite,send_package,2);
    }

}
void PL_SW_INIT()
{
    //初始化结构体
    XGpio_Initialize(&pl_sw, XPAR_AXI_GPIO_1_BASEADDR);
    //设置通道1,8位为输入模式
    XGpio_SetDataDirection(&pl_sw, 1,0xff);//1输入,0输出
    XGpio_SetDataDirection(&pl_sw, 2,0);
}
Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy