本设计仅用到了zynq的ps端。利用串口完成计算数据的输入输出实现简易计算器。
代码语言:javascript
复制
/****************************************************************************** * * Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * Use of the Software is limited solely to applications: * (a) running on a Xilinx device, or * (b) that interact with a Xilinx device through a bus or interconnect. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * Except as contained in this notice, the name of the Xilinx shall not be used * in advertising or otherwise to promote the sale, use or other dealings in * this Software without prior written authorization from Xilinx. * ******************************************************************************/
/*
- helloworld.c: simple test application
- This application configures UART 16550 to baud rate 9600.
- PS7 UART (Zynq) is not initialized by this application, since
- bootrom/bsp configures it to baud rate 115200
- | UART TYPE BAUD RATE |
- uartns550 9600
- uartlite Configurable only in HW design
- ps7_uart 115200 (configured by bootrom/bsp)
*/#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "math.h"double calculator();
int main()
{
init_platform();print("Hello World\n\r"); calculator(); cleanup_platform(); return 0;
}
double calculator()
{
// 分别存放第一个操作数和第二个操作数以及结果的变量
double x1,x2,result;// 存放运算符的变量 char m; while(1) { printf("请输入第一个数:\n"); // 下面这得注意,接收double型的数据得用lf%,接收float用f% scanf("%lf",&x1); printf("请输入运算操作(+ - * /):\n"); m = getchar(); printf("\n"); printf("请输入第二个数:\n"); scanf("%lf",&x2); switch(m) { case '+': printf("加法\n"); result = x1 + x2; printf("%lf + %lf = %lf\n",x1,x2,result); break; case '-': printf("减法\n"); result = x1 - x2; printf("%lf - %lf = %lf\n",x1,x2,result); break; case '*': printf("乘法\n"); result = x1 * x2; printf("%lf * %lf = %lf\n",x1,x2,result); break; case '/': printf("除法\n"); if(x2 == 0) { printf("除数不能为0.\n"); } else { result = x1 / x2; printf("%lf / %lf = %lf\n",x1,x2,result); } break; default: break; } } return 0.0;
}
调试: