单片机使用C语言时,中断子程序在主程序中是怎样被调用的各位helpme!

单片机使用C语言时,中断子程序在主程序中是怎样被调用的各位helpme!,第1张

中断是硬件入口的无须主程序调用,不同的单片机入口地址不同但地址固定,应该在头文件有定义。发生中断时硬件把当前地址入栈然后跳到中断地址去那里通常只是跳转指令,c编译时会把它指向中断子程序。返回时会返回到中断处继续执行。

我也在遇到同样的问题。

具体原因是你的display(xxx,xxx,xxx)函数有形参的调用,也就是说主程序在调用这些形参的时候可能改变了形参的值,而此时可能这个函数又会被中断调用,那么这个形参的值究竟应该是原来的初值还是被主函数改变之后的值呢,所有就会有冲突。当然编译就会报错。

具体解决办法就是将函数都写为可重入函数,避免冲突,就是把你的函数定义写成这样试试

void display(xxxxxxx,xxxxx,xxxxx) reentrant

{

xxxxxxxx;

}

这种情况我也不是很懂,希望多交流交流

以上就是关于单片机使用C语言时,中断子程序在主程序中是怎样被调用的各位helpme!全部的内容,包括:单片机使用C语言时,中断子程序在主程序中是怎样被调用的各位helpme!、中断函数里面不能调用子函数吗、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9528888.html

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

发表评论

登录后才能评论

评论列表(0条)

保存