c语言stm32问题

Python016

c语言stm32问题,第1张

一句话概括,就是告诉编译器pao3这个变量里存的是一个地址值而不是一个整形变量值,虽然他们的表现形式都一致!然后再详细剖析一下上面这句C语言。“u32 *pao3”中

变量类型不是u32,而是u32*。表示变量名pao3所在地址存放的是一个地址值,如果是u32,则表示只是存放的一个32位的整形数据。而地址0x4FFF0001内存放的东西才是32位的整形数据,而这个数有可能是某个整形变量的值或是一个32位寄存器的值。赋值语句后面的(u32*)是一个强制类型转换。所赋的值必须与定义的变量一致。你也可以试试如果把那句话改为u32 *pao3=(u32)(0x4FFF0001)或是u32 *pao3=0x4FFF0001都是会报错的。编译器以为你把一个整形变量赋给了一个指针变量。然后如果你要取该寄存器(0x4FFF0001)的值,则直接取*pao即可,比如printf("%x\n",*pao),如果是在计算机中,你会得到显示13247A1A.

1. 如果你想调用源文件(即.c文件)中的函数,有两种办法,第一种是为这个.c文件增加一个头文件,把需要调用的函数的声明写在这个头文件中,然后让main.c包含这个头文件;第二种是在main.c前用extern声明要调用的函数。个人建议使用第一种方法,第二种方法可能会因为makefile的原因出现一些问题。

2. 不太明白你的意思...调用函数实现功能的话,返回状态应该是由调用者查询的...

3. 我不清楚LCD怎么实现,但是从功能上你说的是没问题的。其他的参照上面两个回答

可以利用C语言扩展特性定义结构体如下

struct {

int bit0:1

int bit1:1

...

} bitblock

引用 bitblock.bit0