您的位置 首页 软件

keil中printf

在keil中printf默认是向串口中发送数据的,所以,如果应用该函数,必须先初始化串口,否则可能引起死机的情况,并且在printf之前应该先将TI置

keilprintf 默许是向串口中发送数据的,所以,假如运用该函数,有必要先初始化串口,不然或许引起死机的状况,并且在printf之前应该先将TI置位,摘录原因如下:

1.printf函数是调用putchar函数输入的,而putchar应该是先判别ti是否为1,不为1则等候为1。假如为1则清0,然后送出一个字符。因而 你假如直接运用printf函数,你的程序就会在putchar函数中等候ti为1。这时你的程序就适当于直接死掉了。你能够经过改写putchar函数 完成自己的意图。TI适当所以初始化~不给赋初值就不干活

2.Keil的串口处理比较奇妙的,我的剖析如下:
putchar.c里边,是先检测TI再发送。这样做的意图是把尽或许多的时刻留给2次串口操作之间的程序,而不是把等候字节发送的时刻白白空等候糟蹋 掉。所以,在体系初始化的时分,一定要令TI=1; 就能够顺利的运用printf函数了。搂主sbuf=” “的办法,其实便是令TI=1.别的要特别注意,printf函数履行结束后,终究一个字节并未发送结束,例如在485通讯中,此刻假如切换为收形式,会丢掉终究一字节.

3.一般串口发送都是等TI(字节发送完标志)为1就立刻发送下一字节,因为不管是中止仍是查 询TI标志的办法,都会检测TI,因而初次发送有必要置位TI标志,使串口开端发送你的“在程序的初始化部分往串口数据寄存器SBUF里放一个字符来重用终 端显现;”办法终究效果也便是把TI置1,改成TI=1;来发动发送也是相同的(当然,不会宣布那个 字符了)。

4.中界说,调用底层的putchar()来完成.底层发送数 据到串口时,先查TI=1是否建立,死等直到TI=1时将新数据写入SBUF,函数回来,所以要先将TI置1,发动第一次传输操作.可检查反汇编相关代码 了解其作业机理!

5.自己了解:在多机通讯中,应该也要形成像 putchar()函数的机理,要有串口中止服务程序,并且是在该程序中判别TI,依据TI是不是该发送下一组数据~相同关于接纳的一方..

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/256862.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部