STM32-Cube定时器TIM

一、内部时钟源

1、创建项目

  • File → New → STM32 project
  • 选择STM32F103C8T6单片机,命名TIM

2、配置单片机

1.打开USART1,方便我们与电脑连接查看数据

  1. 开启UART1并开启中断。
    在这里插入图片描述

2、设置时钟源

  1. 开启外部高速晶振
    在这里插入图片描述
  2. 将时钟频率设置为72MHz
    在这里插入图片描述
  3. 设置调试模式
    在这里插入图片描述
  4. 打开定时器并且设置分频器和重装值
    在这里插入图片描述

3、代码部分

1.查看定时器的重装计数值

  1. 启动定时器功能,计数器开始计数。
  HAL_TIM_Base_Start(&htim4);
  1. 定义变量来存放计数值。
int counter = 0;
  1. 通过串口发送到电脑端,方便查看。
  • 包含需要用到头文件
/* USER CODE BEGIN Includes */
#include <stdio.h>
#include <string.h>
/* USER CODE END Includes */
  • 读取计数值
counter = __HAL_TIM_GET_COUNTER(&htim4);
  • 通过串口发送数据
 	 char message[20];
  
	  sprintf(message, "counter: %d", counter);
	  HAL_UART_Transmit(&huart1, (uint8_t*)message, strlen(message), HAL_MAX_DELAY);
	  HAL_Delay(99);
  • 编译下载程序,串口助手成功接收到数据,因为主程序有延迟100ms函数,串口助手每隔100ms接收一次数据,计数值刚好相隔100个数,证明此程序正常。

2.定时器中断

  1. 开启定时器4的中断功能
    在这里插入图片描述
  2. 将启动定时器的函数改成中断模式的函数。
HAL_TIM_Base_Start_IT(&htim4);
  1. 重写回调函数,计数器每次计数完成会产生一次时间更新,调用一次回调函数,对其重写。
  • stm32f1xx_hal_tim.c中复制回调函数名,在main.c中进行重写。
/* USER CODE BEGIN 0 */
char data[] = "hello!";
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
   
	if (htim = &htim4) {
   
		HAL_UART_Transmit_IT(&huart1, (uint8_t*)data, 6);
	}
}
/* USER CODE END 0 */
  1. 将上个流程中循环语句中的代码删除,因为使用了回调函数,不需要那些。再编译下载,发现两次收到的数据相隔1秒,测试成功。
    在这里插入图片描述

二、外部时钟源

1、创建项目

  • File → New → STM32 project
  • 选择STM32F103C8T6单片机,命名TIM_ExternalClock

2、配置单片机

1. 配置定时器

  • ETR引脚有两种路径进入触发控制器,直接进入(模式2)和通过触发器进入(模式1)
    在这里插入图片描述
  • 因为TIM3、TIM4并没有引出外部触发器ETR引脚,所以这次我们使用TIM2定时器。
    在这里插入图片描述
    在这里插入图片描述

2. 配置IIC来驱动OLED显示

  1. 开启IIC2功能
    在这里插入图片描述
  2. 项目管理,为每个外设创建一个头文件和源文件,然后保存生成代码。
    在这里插入图片描述

3、代码部分

1. 0.96寸4引脚OLED显示模块

  1. 字库和屏幕的驱动的头文件,添加到项目的Core → Inc 里。
  • 字库头文件
#ifndef __FONT_H
#define __FONT_H
#include "stdint.h"
#include "string.h"
typedef struct ASCIIFont {
   
  uint8_t h;
  uint8_t w;
  uint8_t *chars;
} ASCIIFont;

extern const ASCIIFont afont8x6;
extern const ASCIIFont afont12x6;
extern const ASCIIFont afont16x8;
extern const ASCIIFont afont24x12;

/**
 * @brief 字体结构体
 * @note  字库前4字节存储utf8编码 剩余字节存储字模数据
 * @note 字库数据可以使用波特律动LED取模助手生成(https://led.baud-dance.com)
 */
typedef struct Font {
   
  uint8_t h;              // 字高度
  uint8_t w;              // 字宽度
  const uint8_t *chars;   // 字库 字库前4字节存储utf8编码 剩余字节存储字模数据
  uint8_t len;            // 字库长度 超过256则请改为uint16_t
  const ASCIIFont *ascii; // 缺省ASCII字体 当字库中没有对应字符且需要显示ASCII字符时使用
} Font;

extern const Font font16x16;

/**
 * @brief 图片结构体
 * @note  图片数据可以使用波特律动LED取模助手生成(https://led.baud-dance.com)
 */
typedef struct Image {
   
  uint8_t w;           // 图片宽度
  uint8_t h;           // 图片高度
  const uint8_t *data; // 图片数据
} Image;

extern const Image bilibiliImg;

#endif // __FONT_H

  • 屏幕驱动头文件
#ifndef __OLED_H__
#define __OLED_H__

#include "font.h"
#include "main.h"
#include "string.h"

typedef enum {
   
  OLED_COLOR_NORMAL = 0, // 正常模式 黑底白字
  OLED_COLOR_REVERSED    // 反色模式 白底黑字
} OLED_ColorMode;

void OLED_Init();
void OLED_DisPlay_On();
void OLED_DisPlay_Off();

void OLED_NewFrame();
void OLED_ShowFrame();
void OLED_SetPixel(uint8_t x, uint8_t y, OLED_ColorMode color);

void OLED_DrawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, OLED_ColorMode color);
void OLED_DrawRectangle(uint8_t x, uint8_t y, uint8_t w, uint8_t h, OLED_ColorMode color);
void OLED_DrawFilledRectangle(uint8_t x, uint8_t y, uint8_t w, uint8_t h, OLED_ColorMode color);
void OLED_DrawTriangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t x3, uint8_t y3, OLED_ColorMode color);
void OLED_DrawFilledTriangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t x3, uint8_t y3, OLED_ColorMode color);
void OLED_DrawCircle(uint8_t x, uint8_t y, uint8_t r, OLED_ColorMode color);
void OLED_DrawFilledCircle(uint8_t x, uint8_t y, uint8_t r, OLED_ColorMode color);
void OLED_DrawEllipse(uint8_t x, uint8_t y, uint8_t a, uint8_t b, OLED_ColorMode color);
void OLED_DrawImage(uint8_t x, uint8_t y, const Image *img, OLED_ColorMode color);

void OLED_PrintASCIIChar(uint8_t x, uint8_t y, char ch, const ASCIIFont *font, OLED_ColorMode color);
void OLED_PrintASCIIString(uint8_t x, uint8_t y, char *str, const ASCIIFont *font, OLED_ColorMode color);
void OLED_PrintString(uint8_t x, uint8_t y, char *str, const Font *font, OLED_ColorMode color);

#endif // __OLED_H__
  1. 字库和屏幕的驱动的源文件,添加到项目的Core → Src 里。
  • 字库源文件
/**
 * @file font.c
 * @brief 字体库
 *
 * @attention
 * 本字体库与波特律动OLED驱动配套使用
 * 英文字库已包含
 * 中文字库请使用波特律动LED取模工具生成(https://led.baud-dance.com)
 * 图模也使用波特律动LED取模工具生成
 */
// clang-format off
#include "font.h"

// 8*6 ASCII
const unsigned char ascii_8x6[][6] = {
   
    {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space 空格
    {
   0x00, 0x00, 0x00, 0x2f, 0x00, 0x00}, // !
    {
   0x00, 0x00, 0x07, 0x00, 0x07, 0x00}, // "
    {
   0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14}, // #
    {
   0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12}, // $
    {
   0x00, 0x62, 0x64, 0x08, 0x13, 0x23}, // %
    {
   0x00, 0x36, 0x49, 0x55, 0x22, 0x50}, // &
    {
   0x00, 0x00, 0x05, 0x03, 0x00, 0x00}, // '
    {
   0x00, 0x00, 0x1c, 0x22, 0x41, 0x00}, // (
    {
   0x00, 0x00, 0x41, 0x22, 0x1c, 0x00}, // )
    {
   0x00, 0x14, 0x08, 0x3E, 0x08, 0x14}, // *
    {
   0x00, 0x08, 0x08, 0x3E, 0x08, 0x08}, // +
    {
   0x00, 0x00, 0x00, 0xA0, 0x60, 0x00}, // ,
    {
   0x00, 0x08, 0x08, 0x08, 0x08, 0x08}, // -
    {
   0x00, 0x00, 0x60, 0x60, 0x00, 0x00}, // .
    {
   0x00, 0x20, 0x10, 0x08, 0x04, 0x02}, // /
    {
   0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E}, // 0
    {
   0x00, 0x00, 0x42, 0x7F, 0x40, 0x00}, // 1
    {
   0x00, 0x42, 0x61, 0x51, 0x49, 0x46}, // 2
    {
   0x00, 0x21, 0x41, 0x45, 0x4B, 0x31}, // 3
    {
   0x00, 0x18, 0x14, 0x12, 0x7F, 0x10}, // 4
    {
   0x00, 0x27, 0x45, 0x45, 0x45, 0x39}, // 5
    {
   0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30}, // 6
    {
   0x00, 0x01, 0x71, 0x09, 0x05, 0x03}, // 7
    {
   0x00, 0x36, 0x49, 0x49, 0x49, 0x36}, // 8
    {
   0x00, 0x06, 0x49, 0x49, 0x29, 0x1E}, // 9
    {
   0x00, 0x00, 0x36, 0x36, 0x00, 0x00}, // :
    {
   0x00, 0x00, 0x56, 0x36, 0x00, 0x00}, // ;
    {
   0x00, 0x08, 0x14, 0x22, 0x41, 0x00}, // <
    {
   0x00, 0x14, 0x14, 0x14, 0x14, 0x14}, // =
    {
   0x00, 0x00, 0x41, 0x22, 0x14, 0x08}, // >
    {
   0x00, 0x02, 0x01, 0x51, 0x09, 0x06}, // ?
    {
   0x00, 0x32, 0x49, 0x59, 0x51, 0x3E}, // @
    {
   0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C}, // A
    {
   0x00, 0x7F, 0x49, 0x49, 0x49, 0x36}, // B
    {
   0x00, 0x3E, 0x41, 0x41, 0x41, 0x22}, // C
    {
   0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C}, // D
    {
   0x00, 0x7F, 0x49, 0x49, 0x49, 0x41}, // E
    {
   0x00, 0x7F, 0x09, 0x09, 0x09, 0x01}, // F
    {
   0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A}, // G
    {
   0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F}, // H
    {
   0x00, 0x00, 0x41, 0x7F, 0x41, 0x00}, // I
    {
   0x00, 0x20, 0x40, 0x41, 0x3F, 0x01}, // J
    {
   0x00, 0x7F, 0x08, 0x14, 0x22, 0x41}, // K
    {
   0x00, 0x7F, 0x40, 0x40, 0x40, 0x40}, // L
    {
   0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F}, // M
    {
   0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F}, // N
    {
   0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E}, // O
    {
   0x00, 0x7F, 0x09, 0x09, 0x09, 0x06}, // P
    {
   0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E}, // Q
    {
   0x00, 0x7F, 0x09, 0x19, 0x29, 0x46}, // R
    {
   0x00, 0x46, 0x49, 0x49, 0x49, 0x31}, // S
    {
   0x00, 0x01, 0x01, 0x7F, 0x01, 0x01}, // T
    {
   0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F}, // U
    {
   0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F}, // V
    {
   0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F}, // W
    {
   0x00, 0x63, 0x14, 0x08, 0x14, 0x63}, // X
    {
   0x00, 0x07, 0x08, 0x70, 0x08, 0x07}, // Y
    {
   0x00, 0x61, 0x51, 0x49, 0x45, 0x43}, // Z
    {
   0x00, 0x00, 0x7F, 0x41, 0x41, 0x00}, // [
    {
   0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55}, // 55
    {
   0x00, 0x00, 0x41, 0x41, 0x7F, 0x00}, // ]
    {
   0x00, 0x04, 0x02, 0x01, 0x02, 0x04}, // ^
    {
   0x00, 0x40, 0x40, 0x40, 0x40, 0x40}, // _
    {
   0x00, 0x00, 0x01, 0x02, 0x04, 0x00}, // '
    {
   0x00, 0x20, 0x54, 0x54, 0x54, 0x78}, // a
    {
   0x00, 0x7F, 0x48, 0x44, 0x44, 0x38}, // b
    {
   0x00, 0x38, 0x44, 0x44, 0x44, 0x20}, // c
    {
   0x00, 0x38, 0x44, 0x44, 0x48, 0x7F}, // d
    {
   0x00, 0x38, 0x54, 0x54, 0x54, 0x18}, // e
    {
   0x00, 0x08, 0x7E, 0x09, 0x01, 0x02}, // f
    {
   0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C}, // g
    {
   0x00, 0x7F, 0x08, 0x04, 0x04, 0x78}, // h
    {
   0x00, 0x00, 0x44, 0x7D, 0x40, 0x00}, // i
    {
   0x00, 0x40, 0x80, 0x84, 0x7D, 0x00}, // j
    {
   0x00, 0x7F, 0x10, 0x28, 0x44, 0x00}, // k
    {
   0x00, 0x00, 0x41, 0x7F, 0x40, 0x00}, // l
    {
   0x00, 0x7C, 0x04, 0x18, 0x04, 0x78}, // m
    {
   0x00, 0x7C, 0x08, 0x04, 0x04, 0x78}, // n
    {
   0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, // o
    {
   0x00, 0xFC, 0x24, 0x24, 0x24, 0x18}, // p
    {
   0x00, 0x18, 0x24, 0x24, 0x18, 0xFC}, // q
    {
   0x00, 0x7C, 0x08, 0x04, 0x04, 0x08}, // r
    {
   0x00, 0x48, 0x54, 0x54, 0x54, 0x20}, // s
    {
   0x00, 0x04, 0x3F, 0x44, 0x40, 0x20}, // t
    {
   0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C}, // u
    {
   0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C}, // v
    {
   0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C}, // w
    {
   0x00, 0x44, 0x28, 0x10, 0x28, 0x44}, // x
    {
   0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C}, // y
    {
   0x00, 0x44, 0x64, 0x54, 0x4C, 0x44}, // z
    {
   0x14, 0x14, 0x14, 0x14, 0x14, 0x14}, // horiz lines
};

const ASCIIFont afont8x6 = {
   8, 6, (unsigned char *)ascii_8x6};

const unsigned char ascii_12x6[][12] = {
   
    {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*" ",0*/
    {
   0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}, /*"!",1*/
    {
   0x00, 0x0C, 0x02, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*""",2*/
    {
   0x90, 0xD0, 0xBC, 0xD0, 0xBC, 0x90, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00}, /*"#",3*/
    {
   0x18, 0x24, 0xFE, 0x44, 0x8C, 0x00, 0x03, 0x02, 0x07, 0x02, 0x01, 0x00}, /*"$",4*/
    {
   0x18, 0x24, 0xD8, 0xB0, 0x4C, 0x80, 0x00, 0x03, 0x00, 0x01, 0x02, 0x01}, /*"%",5*/
    {
   0xC0, 0x38, 0xE4, 0x38, 0xE0, 0x00, 0x01, 0x02, 0x02, 0x01, 0x02, 0x02}, /*"&",6*/
    {
   0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"'",7*/
    {
   0x00, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04}, /*"(",8*/
    {
   0x00, 0x02, 0x04, 0xF8, 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00}, /*")",9*/
    {
   0x90, 0x60, 0xF8, 0x60, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}, /*"*",10*/
    {
   0x20, 0x20, 0xFC, 0x20, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}, /*"+",11*/
    {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00}, /*",",12*/
    {
   0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"-",13*/
    {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00}, /*".",14*/
    {
   0x00, 0x80, 0x60, 0x1C, 0x02, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00}, /*"/",15*/
    {
   0xF8, 0x04, 0x04, 0x04, 0xF8, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"0",16*/
    {
   0x00, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x02, 0x00, 0x00}, /*"1",17*/
    {
   0x18, 0x84, 0x44, 0x24, 0x18, 0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x00}, /*"2",18*/
    {
   0x08, 0x04, 0x24, 0x24, 0xD8, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"3",19*/
    {
   0x40, 0xB0, 0x88, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00}, /*"4",20*/
    {
   0x3C, 0x24, 0x24, 0x24, 0xC4, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"5",21*/
    {
   0xF8, 0x24, 0x24, 0x2C, 0xC0, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"6",22*/
    {
   0x0C, 0x04, 0xE4, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00}, /*"7",23*/
    {
   0xD8, 0x24, 0x24, 0x24, 0xD8, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"8",24*/
    {
   0x38, 0x44, 0x44, 0x44, 0xF8, 0x00, 0x00, 0x03, 0x02, 0x02, 0x01, 0x00}, /*"9",25*/
    {
   0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}, /*":",26*/
    {
   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00}, /*";",27*/
    {
   0x00, 0x20, 0x50, 0x88, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02}, /*"<",28*/
    {
   0x90, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"=",29*/
    {
   0x00, 0x02, 0x04, 0x88, 0x50, 0x20, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00}, /*">",30*/
    {
   0x18, 0x04, 0xC4, 0x24, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}, /*"?",31*/
    {
   0xF8, 0x04, 0xE4, 0x94, 0xF8, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x00}, /*"@",32*/
    {
   0x00, 0xE0, 0x9C, 0xF0, 0x80, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x02}, /*"A",33*/
    {
   0x04, 0xFC, 0x24, 0x24, 0xD8, 0x00, 0x02, 0x03, 0x02, 0x02, 0x01, 0x00}, /*"B",34*/
    {
   0xF8, 0x04, 0x04, 0x04, 0x0C, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"C",35*/
    {
   0x04, 0xFC, 0x04, 0x04, 0xF8, 0x00, 0x02, 0x03, 0x02, 0x02, 0x01, 0x00}, /*"D",36*/
    {
   0x04, 0xFC, 0x24, 0x74, 0x0C, 0x00, 0x02, 0x03, 0x02, 0x02, 0x03, 0x00}, /*"E",37*/
    {
   0x04, 0xFC, 0x24, 0x74, 0x0C, 0x00, 0x02, 0x03, 0x02, 0x00, 0x00, 0x00}, /*"F",38*/
    {
   0xF0, 0x08, 0x04, 0x44, 0xCC, 0x40, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00}, /*"G",39*/
    {
   0x04, 0xFC, 0x20, 0x20, 0xFC, 0x04, 0x02, 0x03, 0x00, 0x00, 0x03, 0x02}, /*"H",40*/
    {
   0x04, 0x04, 0xFC, 0x04, 0x04, 0x00, 0x02, 0x02, 0x03, 0x02, 0x02, 0x00}, /*"I",41*/
    {
   0x00, 0x04, 0x04, 0xFC, 0x04, 0x04, 0x06, 0x04, 0x04, 0x03, 0x00, 0x00}, /*"J",42*/
    {
   0x04, 0xFC, 0x24, 0xD0, 0x0C, 0x04, 0x02, 0x03, 0x02, 0x00, 0x03, 0x02}, /*"K",43*/
    {
   0x04, 0xFC, 0x04, 0x00, 0x00, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x03}, /*"L",44*/
    {
   0xFC, 0x3C, 0xC0, 0x3C, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00}, /*"M",45*/
    {
   0x04, 0xFC, 0x30, 0xC4, 0xFC, 0x04, 0x02, 0x03, 0x02, 0x00, 0x03, 0x00}, /*"N",46*/
    {
   0xF8, 0x04, 0x04, 0x04, 0xF8, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"O",47*/
    {
   0x04, 0xFC, 0x24, 0x24, 0x18, 0x00, 0x02, 0x03, 0x02, 0x00, 0x00, 0x00}, /*"P",48*/
    {
   0xF8, 0x84, 0x84, 0x04, 0xF8, 0x00, 0x01, 0x02, 0x02, 0x07, 0x05, 0x00}, /*"Q",49*/
    {
   0x04, 0xFC, 0x24, 0x64, 0x98, 0x00, 0x02, 0x03, 0x02, 0x00, 0x03, 0x02}, /*"R",50*/
    {
   0x18, 0x24, 0x24, 0x44, 0x8C, 0x00, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00}, /*"S",51*/
    {
   0x0C, 0x04, 0xFC, 0x04, 0x0C, 0x00, 0x00, 0x02, 0x03, 0x02, 0x00, 0x00}, /*"T",52*/
    {
   0x04, 0xFC, 0x00, 0x00, 0xFC, 0x04, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00}, /*"U",53*/
    {
   0x04, 0x7C, 0x80, 0xE0, 0x1C, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00}, /*"V",54*/
    {
   0x1C, 0xE0, 0x3C, 0xE0, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00}, /*"W",55*/
    {
   0x04, 0x9C, 0x60, 0x9C, 0x04, 0x00, 0x02, 0x03, 0x00, 0x03, 0x02, 0x00}, /*"X",56*/
    {
   0x04, 0x1C, 0xE0, 0x1C, 0x04, 0x00, 0x00, 0x02, 0x03, 0x02, 0x00, 0x00}, /*"Y",57*/
    {
   0x0C, 0x84, 0x64, 0x1C, 0x04, 0x00, 0x02, 0x03, 0x02, 0x02, 0x03, 0x00}, /*"Z",58*/
    {
   0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x00}, /*"[",59*/
    {
   0x00, 0x0E, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00}, /*"\",60*/
    {
   0x00, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x04, 0x04, 0x07, 0x00, 0x00}, /*"]",61*/
    {
   0x00, 0x04, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值