STM32项目实际问题:函数返回值为u8如何调用到SPI屏幕函数u8 *中打印

/**
* @brief  		查看指纹数量
* @param  		void
* @retval 	 	void
* @function  
*/ 
u8 Look_flag=1;
u8 Look_finger=1;
void Look_ALL_Finger(void)
{
	u8 * data;    //定义指针
	if(Look_finger)
	{
	u8 Look_val[20]={0};   //定义工具数组
	page_flag=0;//设置密码标志位
		Look_val[0]=GetUserNum(0)+48;  //目标函数返回值为u8  使用数组第0位接收
      data=&Look_val[0];
	printf("Look_val:%d\r\n",GetUserNum(0)); 
	printf("* data:%d\r\n",* data);
		Lcd_DisplayStr(20,30,0x0000,0xffff,32,(u8 *)"用户数量:");
	  	Lcd_DisplayStr(20,130,0x0000,0xffff,32,(u8 *)data);   //输出
	Lcd_DisplayStr(0,180,0x0000,0xffff,24,(u8 *)"按*返回上级菜单:");
	while(Look_flag)
	{
				u8 key=BS8116_Key_Scan();
	if(key=='*')
			{
			printf("退出显示用户密码,返回上一级菜单\r\n");
			Look_flag=0;//循环标志位
			page_flag=0;
			Lcd_Clear_Display(0,0,240,240,0xffff);//清屏
			PW_flag=0;
			Look_finger=0;//显示密码标志位
			}
	}
}
}

这是一个非常典型的问题,首先一个函数返回值为u8类型,但SPI显示屏的输出类型是u8 *,一字节一字节地传过去。解决办法:

这里回顾一下定义一个指针变量如何指向数组首元素:

#include 

int main() {
int a[] = {1, 2, 3};
int *xxx;
xxx = a; // 指针xxx直接指向数组名
printf("xxx=%p\n", xxx);
return 0;
}

因为u8 *data是指向存储返回值的数组在第1个也就是xxx[0],所以用data指向xxx[0],那么用SPI显示屏输出的u8 *直接填data,读取data的地址即xxx[0]的地址

你可能感兴趣的:(C语言,STM32,stm32,c语言)