#include <reg52.h>
#include <intrins.h>
sbit CONF_DONE=P1^0;//配置完成状态引脚
sbit DCLK=P1^1;//配置时钟引脚
sbit NCONFIG=P1^2;//配置控制引脚
sbit NSTATUS=P1^3;//配置状态引脚
sbit DATA0=P1^4;//配置数据引脚
unsigned char code fpga[]={0xfe
/*FPGA的.ttf文件内容*/
};
void main()
{
unsigned char dat,i;
unsigned int j;
NCONFIG=1;
NSTATUS=1;
DCLK=0;
CONF_DONE=1;
do{
for(j=0;j<500;j++)
{
_nop_();
}
NCONFIG=0;
for(i=0;i<15;i++)
{
_nop_();
}
NCONFIG=1;
while(NSTATUS==0);
_nop_();_nop_();_nop_();_nop_();_nop_();
for(j=0;j<sizeof(fpga);j++)
{
dat=fpga[j];
for(i=0;i<8;i++)
{
DCLK=0;
DATA0=(bit)(dat&0x01);
DCLK=1;
dat=dat>>1;
_nop_();
DCLK=0;
}
}
_nop_();_nop_();_nop_();_nop_();_nop_();
}while(CONF_DONE==0);//配置完成
while(1);
}
就是这个程序,改成stm32的程序,求各位大神帮忙
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这里的bit是位的意思,
在51中,像你程序中的DATA0是指P14脚位,应该是输出脚,当你DATA0=1;的时候,意思是这个脚位输出高电平,而在stm32中,你开了时钟,设置了脚位的输入输出,然后要输出高电平时,你可以直接用标准库中的GPIO_SetBits(...)函数,这是等价的;
在stm32中,你要先判断(dat&0x01)是等于1还是0,在决定用GPIO_SetBits(...)还是GPIO_ResetBits(...)函数;
个人建议你找个简单的stm32引脚控制例程,看你的程序应该只是简单的引脚控制功能
一周热门 更多>