#include <stdio.h>
#include "platform.h"
#include "axi_pwm.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xil_printf.h"
//void print(char *str);
#define GPIO_BITWIDTH 8
#define GPIO_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID//device ID
#define LED_DELAY 10000000
#define LED_MAX_BLINK 0x1
#define LED_CHANNEL 1
#define printf xil_printf
#define PWM_BASEADDR XPAR_AXI_PWM_0_S00_AXI_BASEADDR
XGpio Gpio;
XGpio GpioOutput;
int GpioMarquee (u16 DeviceId, u32 GpioWidth)
{
volatile int Delay;
u32 LedBit;
u32 LedLoop;
int Status;
Status = XGpio_Initialize(&GpioOutput, DeviceId);
if (Status ! = XST_SUCCESS) //就是在这里 提示有错!
{
return XST_FAILURE;
}
XGpio_SetDataDirection(&GpioOutput, LED_CHANNEL, 0x0);
XGpio_DiscreteWrite(&GpioOutput, LED_CHANNEL, 0x0);
for (LedBit = 0x0; LedBit < GpioWidth; LedBit ++){
for(LedLoop = 0; LedLoop < LED_MAX_BLINK; LedLoop ++){
XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,
1 << LedBit);
for (Delay = 0; Delay < LED_DELAY; Delay ++);
XGpio_DiscreteClear(&GpioOutput, LED_CHANNEL,
1 << LedBit);
for (Delay = 0; Delay < LED_DELAY; Delay ++);
}
}
return XST_SUCCESS;
}
int main()
{
init_platform();
print("Hello World\n\r");
AXI_PWM_mWriteReg(PWM_BASEADDR,
AXI_PWM_S00_AXI_SLV_REG0_OFFSET,10000);
AXI_PWM_mWriteReg(PWM_BASEADDR,
AXI_PWM_S00_AXI_SLV_REG1_OFFSET, 0x80000000 + 5000);
u32 status;
status = GpioMarquee (GPIO_DEVICE_ID,GPIO_BITWIDTH);
if (status == 0)print("SUCESS!.\r\n");
else printf("FAILED.\r\n");
return 0;
}
5 个解决方案
#1
! =不等于中间该没空格吧
#2
这个编译错误自己检查撒
#3
这样的问题最好自己先定位,同时在这个过程中积累自己的经验从而避免以后再犯此类错误。
#4
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
#5
检查有没有中文标点
#1
! =不等于中间该没空格吧
#2
这个编译错误自己检查撒
#3
这样的问题最好自己先定位,同时在这个过程中积累自己的经验从而避免以后再犯此类错误。
#4
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
#5
检查有没有中文标点