不是C90编译和C99编译的问题,我尝试过了,没有效果,所以请不要说更改为C99,谢谢。宏定义及其他的我在其他程序使用是正常的,这个程序和其他程序使用同一个模板,所以这个写法是可以的。
整体程序放在附件中:
具体问题如下:
程序运行是软件模拟SPI通讯,然后昨天运行是正常的,然后晚上我运行就出错了,然后只有这个出错,而且这个写法在其他的文件中没有错误,只有这个出错,并且我复制了其他地方正确头文件和代码放在这里也是出错,程序头文件和代码如下:
头文件:
[mw_shl_code=c,true]#ifndef __OUTOUT_H
#define __OUTOUT_H
#include "sys.h"
#define TLC_DIN PCout(0)
#define TLC_CS PCout(1)
#define TLC_SCLK PCout(2)
void OUTOUT_Init(void);
#endif
[/mw_shl_code]
程序main函数报错部分如下:
[mw_shl_code=c,true]
void SPI_Write_Byte(unsigned char data_in)
{
TLC_SCLK=0;
if((0x80&data_in)==0x80)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
TLC_SCLK=0;
if((0x40&data_in)==0x40)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
TLC_SCLK=0;
if((0x20&data_in)==0x20)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
TLC_SCLK=0;
if((0x10&data_in)==0x10)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
TLC_SCLK=0;
if((0x8&data_in)==0x8)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
TLC_SCLK=0;
if((0x4&data_in)==0x4)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
TLC_SCLK=0;
if((0x2&data_in)==0x2)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
TLC_SCLK=0;
if((0x1&data_in)==0x1)
{
TLC_DIN=1;
}
else
{
TLC_DIN=0;
}
TLC_SCLK=1;
}
void D_A_Converter(unsigned int data_in)
{
unsigned char h_data;
unsigned char l_data;
data_in<<=2;
h_data=(data_in>>8);
l_data=(0x00ff&data_in);
TLC_SCLK=0;
TLC_CS=0;
SPI_Write_Byte(h_data);
SPI_Write_Byte(l_data);
TLC_SCLK=0;
TLC_CS=1;
}[/mw_shl_code]
编译报错代码如下图:
报错
TCL5615.zip
(345.21 KB, 下载次数: 3)
2019-4-28 09:11 上传
点击文件名下载附件
整体代码
sys.h 的第30行 你误操作了
#define GPIOC_ODR_Addr (GPIOC_BASE+12) / /0x4001100C
注释的两个//中间有空格
谢谢大佬,我编译成功了
引脚PC0,1,2分别对应DIN,CS,SCLK
一周热门 更多>