例如 已经定义好了
#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型的指针
*//再对那个指针进行访问*+指针(地址)为一个指针运算,结果是它指向的类型的空间