2009-03-17
ARM 9 串行口实验 - [学习]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://alwayscongcong.blogbus.com/logs/36688402.html
学习时对有的概念有新的理解,想写下来~
认识指针:
#define rUTRSTAT0 (*(volatile unsigned *)0x50000010)
ARM自带3个UART(Universal Asynchronous Receiver and Transmitter)端口,0x50000010为端口0的UTRSTAT(发送接收状态寄存器)地址。编译器在编译代码时很可能把一些程序使用频率较高的变量放入寄存器,这样变量的存取速度很快。volatile告诉编译器不对它所修饰的变量做优化,避免该变量在内存中的值已经改变(很可能是通过DMA方式)而缓存到寄存器中的值却没变。
unsigned *ui;
char *pch;
ui = (unsigned *)pch;
(unsigned *)强制类型转换作用在pch上,而pch的值其实是它所指向的内存单元的编号,所以
(unsigned *)0x....是一样的。同理*0x...也容易理解了,就是该内存单元里的内容。
空while语句:
while(!(rUTRSTAT1 & 0x4)); //Wait until THR is empty.
........
看程序时,怎么看也不对呀,跟“循环里的”条件正好相反。琢磨了好久终于发现空空空。还是不会看注释呀!
收藏到:Del.icio.us
引用地址:








评论