XUartPs Uart_Ps; //定义一个全局变量,这里的XUartPs应该是一个宏定义变量
int main()
{XUartPs_Config Config; //定义一个XUartPs_Config的指针变量,这里的XUartPs_Config应该是一个宏定义变量
int Status;
int SentCount = 0, RecvCount = 0; //以上两行定义三个整形变量
u8 HelloZynq[] = "Hello Zynq\n"; //定义一个u8的字符串变量,这里的u8应该是一个宏定义变量
u8 RecvBuf[3] = ""; //同上
XGpio Gpio; //定义一个XGpio类型的变量,这里的XGpio应该是一个宏定义变量
XGpioPs Gpiops; //定义一个XGpioPs类型的变量,这里的XGpioPs应该是一个宏定义变量
XGpioPs_Config ConfigPtr; //定义一个XGpioPs_Config的指针变量,这里的XGpioPs_Config应该是一个宏定义变量
u8 axi_Gpio_Data, ps_Gpio_Data; //定义两个u8类型变量,这里的u8应该是一个宏定义变量
Config = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID); //调用XUartPs_LookupConfig函数
if (NULL == Config) { //判断 Config变量是否为NULL空值
return XST_FAILURE;} //是的话,返回XST_FAILURE值
Status = XUartPs_CfgInitialize(&Uart_Ps, Config, Config->BaseAddress);//调用XUartPs_CfgInitialize 函数
if (Status != XST_SUCCESS) { //XST_SUCCESS应该是一个预先定义好的常量
return XST_FAILURE;}
while (SentCount < (sizeof(HelloZynq) - 1)) { //通过判断SentCount的大小,退出循环
SentCount += XUartPs_Send(&Uart_Ps, &HelloZynq[SentCount], 1);} //调用XUartPs_Send函数
Status = XGpio_Initialize(&Gpio, XPAR_AXI_GPIO_0_DEVICE_ID);//调用XGpio_Initialize函数
if (Status != XST_SUCCESS) {
return XST_FAILURE;}
XGpio_SetDataDirection(&Gpio, 1, 0x0); //调用XGpio_SetDataDirection函数
ConfigPtr = XGpioPs_LookupConfig(XPAR_XGPIOPS_0_DEVICE_ID);//调用XGpioPs_LookupConfig函数
Status = XGpioPs_CfgInitialize(&Gpiops, ConfigPtr, ConfigPtr->BaseAddr);//调用XGpioPs_CfgInitialize函数
if (Status != XST_SUCCESS) {
return XST_FAILURE;}
XGpioPs_SetDirection(&Gpiops, 2, 0xF); //调用XGpioPs_SetDirection函数
XGpioPs_SetOutputEnable(&Gpiops, 2, 0xF);//调用XGpioPs_SetOutputEnable函数
while (1){ //进入循环
RecvCount = 0;
while (RecvCount < 3) {
while (!XUartPs_IsReceiveData(Config->BaseAddress)); //调用XUartPs_IsReceiveData函数
XUartPs_Recv(&Uart_Ps, &RecvBuf[RecvCount], 1);//调用XUartPs_Recv函数
if (RecvBuf[RecvCount] == '\r') {
RecvBuf[RecvCount] = '\n';
XUartPs_Send(&Uart_Ps, &RecvBuf[RecvCount], 1);//调用XUartPs_Send函数
break; }
XUartPs_Send(&Uart_Ps, &RecvBuf[RecvCount++], 1);}//调用XUartPs_Send函数
if (RecvBuf[0] >= '0' && RecvBuf[0] <= '9') axi_Gpio_Data = RecvBuf[0] - '0';
else if (RecvBuf[0] >= 'a' && RecvBuf[0] <= 'z') axi_Gpio_Data = RecvBuf[0] - 'a' + 10;
else if (RecvBuf[0] >= 'A' && RecvBuf[0] <= 'Z') axi_Gpio_Data = RecvBuf[0] - 'A' + 10;
XGpio_DiscreteWrite(&Gpio, 1, axi_Gpio_Data); //调用XGpio_DiscreteWrite函数
if (RecvBuf[1] >= '0' && RecvBuf[1] <= '9') ps_Gpio_Data = RecvBuf[1] - '0';
else if (RecvBuf[1] >= 'a' && RecvBuf[1] <= 'z') ps_Gpio_Data = RecvBuf[1] - 'a' + 10;
else if (RecvBuf[1] >= 'A' && RecvBuf[1] <= 'Z')ps_Gpio_Data = RecvBuf[1] - 'A' + 10;
XGpioPs_Write(&Gpiops, 2, ps_Gpio_Data);}//调用XGpioPs_Write函数
return 0;}
//程序的本质就是不断的调用不同的函数,然后分析返回值,判读返回值的结果,是否要继续执行下面的代码。
在C++中//是行注释的意思。
程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。
C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。
C++中注释的种类:
1、单行注释:以双斜线(//)开始,以换行符结束。当前双斜线右侧的所有内容都会被编译器忽略。
2、界定符对注释:以/开始,以/结束,可以包含出/外的任意内容,包括换行符。当注释界定符跨越多行时,最好能显式指出其内部的程序行都属于多行注释的一部分。
C++所采用的风格是,注释内的每行都以一个星号开头,从而指出整个范围都是多行注释的一部分。
扩展资料
编程符号种类:
1、算术运算符
用于各类数值运算。包括加(+)、减(-)、乘()、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4、位 *** 作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5、赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6、条件运算符
这是一个三目运算符,用于条件求值(:)。
7、逗号运算符
用于把若干表达式组合成一个表达式(,)。
8、指针运算符
用于取内容()和取地址(&)二种运算。
9、求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符
有括号(),下标[],成员(→,)等几种。
以上就是关于程序不懂,请大神在每句后标注解释,万分感谢全部的内容,包括:程序不懂,请大神在每句后标注解释,万分感谢、编程中//什么意思、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)