当前位置: 代码迷 >> 单片机 >> 多个串口初始化的函数如何写
  详细解决方案

多个串口初始化的函数如何写

热度:132   发布时间:2016-04-28 16:21:14.0
多个串口初始化的函数怎么写?
例如   已经定义好了
#define   U0IIR                       (*((volatile   unsigned   char   *)   0xE000C008))

#define   U1IIR                       (*((volatile   unsigned   char   *)   0xE0010008))
等等
如何写一个函数 让多个串口初始化都调用一个函数呢?
init()
{
U0IIR   =   0x07;  
U1IIR   =   0x07;  
}这样可行但是  
我想实现写成
init(   传递地址   )
{
传递地址   =   0x07;  
}       相当于右面是变量有这种方法吗?       或者有其他方法吗     在多串口时   必须重复的都写出来吗?  谢谢解答 学习!!

------解决方案--------------------
init( p )
{
*p = 0x07;
}

调用
init(&U0IIR);
init(&U1IIR);
------解决方案--------------------
上面发错了,不好意思...
U0IIR
U1IIR
只是reg地址地址而已,不关函数的事情

init的时候带串口号进来,通过指针指向不同的函数指针或寄存器地址指针即可。。。

------解决方案--------------------
(*((volatile unsigned char *) 0xE000C008)) 
理解这个是C语言基础的问题了

0xE000C008//它是一个常量,可以看成是一个无符号数,在C语言里指针的本质也是一个无符号数
(volatile unsigned char *)//将上面那个常量强制定义成一个unsigned char型的指针
*//再对那个指针进行访问*+指针(地址)为一个指针运算,结果是它指向的类型的空间
  相关解决方案