{ unsigned char High8bit,Low8bit; unsigned int pos; static uint8_t everRead=0; // printf("c is %x\r\n",c); /*第一次使用,初始化FLASH*/ if(everRead == 0) { SPI_FLASH_Init(); everRead = 1; } Low8bit= c >> 8; /* 取高8位数据 */ High8bit= c & 0x00FF; /* 取低8位数据 */ /*GB2312 公式*/ pos = ((High8bit-0xa1)*94+Low8bit-0xa1)*WIDTH_CH_CHAR*HEIGHT_CH_CHAR/8; // printf("pos is %x\r\n",pos); SPI_FLASH_BufferRead(pBuffer,GBKCODE_START_ADDRESS+pos,WIDTH_CH_CHAR*HEIGHT_CH_CHAR/8); //读取字库数据 return 0; }
时间: 2023-02-06 14:26:54 浏览: 67
这段代码的作用是对FLASH进行初始化,并将变量c的高8位存储在High8bit中,低8位存储在Low8bit中。
代码中定义了3个变量:
- unsigned char High8bit:用于存储c的高8位。
- unsigned char Low8bit:用于存储c的低8位。
- unsigned int pos:没有被使用。
- static uint8_t everRead:用于标记是否第一次使用FLASH。
代码的执行流程如下:
1. 判断是否第一次使用FLASH,如果是,则执行SPI_FLASH_Init()初始化FLASH,并将everRead赋值为1。
2. 将变量c的高8位右移8位后赋值给Low8bit。
3. 将变量c的值赋值给High8bit。
注意:在C语言中,>>运算符表示右移,用于将一个数的二进制向右移动指定位数。例如,将一个数x的二进制向右移动2位,可以写成x>>2。
相关问题
typedef unsigned char uint8_t;与typedef unsigned short uint8_t;
这两段代码都使用了 typedef 关键字来定义 uint8_t,但是它们定义的类型不同。第一段代码定义了一个 8 位无符号整型别名 uint8_t,而第二段代码定义了一个 16 位无符号整型别名 uint8_t。
这两个别名都是为了增加代码的可移植性而定义的。在不同的平台和编译器中,unsigned char 和 unsigned short 可能会被定义为有符号或无符号类型,甚至它们的大小也可能不同。定义一个别名可以确保 uint8_t 总是被解释为无符号的 8 位或 16 位整型,而不受平台和编译器的影响。
在使用这些别名时,应该根据具体情况选择使用哪个类型。如果需要一个更小的数据类型来存储数据,可以使用 uint8_t,而如果需要一个更大的数据类型来存储数据,可以使用 uint16_t。
unsigned char 和 uint8_t
unsigned char和uint8_t都是用来表示8位无符号整数的数据类型。
unsigned char是C语言中的数据类型,它可以表示0到255之间的整数。它占用一个字节的内存空间,即8位。
uint8_t是C语言中的固定宽度整数类型,它是无符号的8位整数。它的定义可以根据不同的编译器和平台有所不同,但通常它被定义为unsigned char类型。
这两个类型的主要区别在于uint8_t是一个固定宽度的整数类型,而unsigned char的宽度可能会根据编译器和平台的不同而有所变化。
以下是一个演示示例:
```c
#include <stdio.h>
#include <stdint.h>
int main() {
unsigned char c = 255;
uint8_t u = 255;
printf("unsigned char: %u\n", c); // 输出:255
printf("uint8_t: %u\n", u); // 输出:255
return 0;
}
```
这个示例演示了如何使用unsigned char和uint8_t来表示8位无符号整数,并打印它们的值。