(99) 继续介绍 uart 的关于通道的 一整套 寄存器, UCON 等:
++ 接着介绍输入输出状态寄存器 UTRSTAT :
++ 补充:上图也显示了,对于 FIFO 模式,不应参考上述寄存器,而应改参考对应 FIFO 模式的状态寄存器:
++ 接着介绍读写数据的寄存器:
++ 设置 uart 的波特率,有关的寄存器:
++ 补充 soc 的常用时钟频率:
++
(100) 接着介绍驱动编写 ,代码部分。这里的 puts / gets 是在 soc 上运行的代码。puts 是 soc 通过 uart 对外输出 ,getc 是 soc 经过 uart 获取数据:
++
++ 接着介绍 uart_init () 函数:
++ 接着学习 putc () 函数:
++ 接着介绍 getc () 函数:
++ gets () / puts() 函数:
++ 利用以上函数的支持,可以实现 printf () 函数:
++
++ 测试结果如下:
++ 至此,就在咱们自己的工程里实现了 printf( ) 函数。此时也因为预置了 CRT 的波特率为 115200 。
(101) 接着学习如何修改波特率为 9600 :
++
++ make 的新用法,从指定标号开始执行:
++ 通过 CRT 下载代码,并试运行:
++ 断开 CRT 与 soc 连接的方法,那个图标 :
++ 重新配置 CRT :
++
++ 老师说,按下回车,就可以重新连接了:
++ 然后有显示结果了,说明波特率已经改过来了:
++ 老师说也可以改一下别的参数,数据位,停止位等,实验实验。但常用的就是上面的配置。后面讲解更复杂的学习:中断。
(102)接着开始介绍讯为板子的代码与实验:
++
(103)因为远见与讯为板子一致,就不再区分两套源代码。首先介绍 cpu/ start.s 文件,其实相同于 pWM 里的 start.s 文件,复制过来:
++ 分析远见板子的 uart.c 文件:
++关于 printf() 实现的描述略。以后可能再看,处理可变参数列表,处理格式转换,想必比较复杂。还有处理可变参的宏定义。只是知道有这么回事。
++ main.c 函数见前面图片。是一样的。接着介绍 makefile 文件,跟笔记 12 的 PWM 一样。文件名也是一样的:
++ 补充下 objcopy 命令的选项,可见这一次并没有用 -S 选项去掉文件里的符号表:
++ 配套 makefile 的 lds 文件:
++ 输入 make 命令,编译:
++ 接着介绍讯为板子的代码,只列出不一样的地方和文件:
++ 以下是 讯为板子的测试结果:
++ 先修改 main.c 文件,给 printf() 函数加难度:
++ 开始调整波特率的小数部分:
++ 重新编译,运行 :
++ 再改为 9600 波特率输出数据:
++ 测试结果。我猜测,是不是设置成别的波特率,也一样可以直接在电脑上输出呢 :
++ 至于为啥,随意设置波特率,都可以输出,就这样了,以后再学习。谢谢老师的教导:
至此,本章可以告一段落了,结束了。
(104)
谢谢