用于开发STM32、开发keil软件和开发C51的keil软件相冲突怎么解决?

用于开发STM32、开发keil软件和开发C51的keil软件相冲突怎么解决?,第1张

51单片机用的是 keilC51;STM32装keilMDK。\r\n如果先装keilC51,后装keilMDK的,装在不同的目录里,装完之后不管是51工程还是stm32工程默认都会用keilMDK打开,这样打开51工程时会出错.\r\n \r\n最简单的方法段冲: 要打开51的工程必须先打开山燃弊keilC51程序,然后再程序里打开工程文件。\r\n打开stm32工程当然没有问题.\r\n \r\n第二个方法: 让keilMDK兼容51的工程,只要一个keil就都能编译51和逗族stm32的工程了:\r\n1、安装keilC51,安装目录 C:\keilC51\\r\n2、安装keilMDK,安装目录 C:\keilMDK\\r\n3、把 C:\keilC51\ 里面的 C51 文件夹复制到 C:\keilMDK\ 里\r\n4、把 C:\keilC51\ 里面的 UV4 文件夹复制到 C:\keilMDK\ 里,提示有同名文件都不要覆盖(注意是不要覆盖)\r\n5、把 C:\keilC51\TOOLS.INI 文件里面的内容复制到 C:\keilMDK\TOOLS.INI 文件后面,并且把所有的 "keilC51”替换为"keilMDK”\r\n这样就可以了

没有冲突啊。

两个中断到来的时间是不一样的。

1、虽然你让两个计时器计数时间相同。但由于你开计数器的时间不可能同一个时刻,只能是开一个,接着开一个,所以这两个计数器开始工作的时间是有差别的。

2、每个计数器中断里面执行的内容(代码)长度不一样汪烂,花的时间也不一样。因此,两个计数器申请中断的时刻,也不可能是同时的。换句话说,即使有可能是同一时刻申请中断,根据同一优先级中断的优先原则,先处理T0中断。当然,同一时刻两个计数器申请中断,这种概率……即使出现,对整个程序也不会造成很大的影响。因为,这次由于冲突,丢失了一次中断,那么下次出现冲突,都不知道要等到什么时候了!从宏观来说,对数码管显示的影响,甚至可以忽略了。

3、这两个中断,对主函数里面的display函数,也不会造成致命影响困猛漏。因为两个中断中的代知森码都很短,占用的时间也很少(相对于数码管扫描来说)。因此不会造成人眼看数码管会闪烁等问题。

程序需要做些修裤誉侍改,修改如下:

void timer_init()

TMOD=0x22//最好用模式2,10个机器周期就中断,最好减少服务时间

SCON=0X50

TH1=0xfd

TL1=0xfd

//ET1=1这是不允许的

TR1=1

TH0=0xF6

TL0=0xF6

ET0=1

TR0=1

ES=1

EA=1 

void timer0_int() interrupt 1 

{

time++

if(time<50) //count为占空比

{

PWM=1 //输出高电平

}

else 

PWM=0

if(time>=100)

{

time=0

}

}

void ser() interrupt 4

{

if (RI)

{

RI=0

Re_buf[counter]=SBUF

if(counter==0&&Re_buf[0]!=0x55) return //第0号数据不是帧头

counter++ 

if(counter==11) //接收到11个胡吵数据

counter=0 //重新赋值,虚衫准备下一帧数据的接收 

switch(Re_buf [1])

{

case 0x53: 

ucStrAngle[0]=Re_buf[2]

ucStrAngle[1]=Re_buf[3]

ucStrAngle[2]=Re_buf[4]

ucStrAngle[3]=Re_buf[5]

ucStrAngle[4]=Re_buf[6]

ucStrAngle[5]=Re_buf[7]

break

}

}

Vax = ((short)(ucStrAngle[1]<<8| ucStrAngle[0]))/32768.0*180

if(Vax>0)

{

x=1

xx=0

}

else if(Vax<=0)

{

x=0

xx=1

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12338831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存