STM32的PWM和DAC练习

STM32的PWM和DAC练习

1.实验环境

1.野火STM32指南者(STM32F103VET6)
2.keil5
3.Adobe Audition 2020

2.环境搭建
在野火官方资料库中,找到“TIM—通用定时器-4路PWM输出”文件夹,打开keil工程文件

在这里插入图片描述

在这里插入图片描述

接PA6引脚,示波器观察如下
在这里插入图片描述
没有示波器也可进行仿真,
打开魔法棒,选中“Use Simulator”
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.用STM32F103的DAC功能波形输出
在野火官方资料库中找到“DAC—输出正弦波”文件夹,打开keil工程文件,把bsp_dac.c中的代码修改如下,编译烧录到STM32中即可得到2Khz的正弦波。
在这里插入图片描述
源码

/**
  ******************************************************************************
  * @file    bsp_xxx.c
  * @author  fire
  * @version V1.0
  * @date    2013-xx-xx
  * @brief   adc1 应用bsp / DMA 模式
  ******************************************************************************
  * @attention
  *
  * 实验平台:野火STM32 指南者 开发板 
  * 论坛    :http://www.firebbs.cn
  * 淘宝    :http://fire-stm32.taobao.com
  *
  ******************************************************************************
  */ 
  
#include "./dac/bsp_dac.h"

//正弦波单个周期的点数
#define POINT_NUM 3792

/* 波形数据 ---------------------------------------------------------*/
const uint16_t Sine12bit[POINT_NUM] = {
	       0xa7,	 0xeb,	 0xf0,	 0xeb,	 0xf2,	 0xec,	 0xe4,	 0xde,	 
	        0xce,	 0xce,	 0xc5,	 0xc2,	 0xba,	 0xaf,	 0xaf,	 0xa9,	 
	        0xa7,	 0xa3,	 0x9e,	 0x8e,	 0x87,	 0x80,	 0x71,	 0x64,	 
	        0x5f,	 0x4c,	 0x3d,	 0x3e,	 0x3c,	 0x35,	 0x42,	 0x47,	 
	        0x52,	 0x5e,	 0x73,	 0x7a,	 0x88,	 0x9d,	 0x9c,	 0xa0,	 
	        0xaa,	 0xad,	 0xa5,	 0xa5,	 0xab,	 0xa0,	 0xa4,	 0xa8,	 
	        0xa7,	 0xb0,	 0xbc,	 0xbd,	 0xbc,	 0xc1,	 0xb7,	 0xaa,	 
	        0x9d,	 0x85,	 0x73,	 0x61,	 0x61,	 0x4a,	 0x49,	 0x49,	 
	        0x45,	 0x56,	 0x68,	 0x69,	 0x62,	 0x75,	 0x77,	 0x77,	 
	        0x74,	 0x72,	 0x6a,	 0x5d,	 0x79,	 0x84,	 0x94,	 0x9f,	 
	        0xb2,	 0xc7,	 0xdb,	 0xec,	 0xe6,	 0xf0,	 0xe6,	 0xe4,	 
	        0xda,	 0xd4,	 0xd1,	 0xcb,	 0xd3,	 0xc8,	 0xc1,	 0xbc,	 
	        0xba,	 0xad,	 0xab,	 0x9d,	 0x7e,	 0x7a,	 0x6c,	 0x58,	 
	        0x4c,	 0x40,	 0x33,	 0x22,	 0x2a,	 0x22,	 0x1e,	 0x21,	 
	        0x29,	 0x29,	 0x37,	 0x41,	 0x37,	 0x45,	 0x53,	 0x55,	 
	        0x56,	 0x60,	 0x60,	 0x64,	 0x6f,	 0x72,	 0x75,	 0x78,	 
	        0x83,	 0x85,	 0x8a,	 0x9b,	 0x92,	 0x8c,	 0x93,	 0x84,	 
	        0x76,	 0x6f,	 0x5d,	 0x47,	 0x48,	 0x3e,	 0x31,	 0x30,	 
	        0x33,	 0x3a,	 0x3b,	 0x4d,	 0x4f,	 0x4c,	 0x55,	 0x51,	 
	        0x4a,	 0x49,	 0x43,	 0x38,	 0x3e,	 0x3a,	 0x50,	 0x60,	 
	        0x76,	 0x8e,	 0xa7,	 0xbe,	 0xd8,	 0xd6,	 0xdf,	 0xd3,	 
	        0xd9,	 0xcd,	 0xc3,	 0xb8,	 0xbe,	 0xc7,	 0xbe,	 0xbc,	 
	        0xbb,	 0xb2,	 0xb2,	 0xae,	 0xa7,	 0x91,	 0x8c,	 0x7c,	 
	        0x6a,	 0x54,	 0x4c,	 0x38,	 0x2f,	 0x3a,	 0x2b,	 0x2a,	 
	        0x2e,	 0x2c,	 0x36,	 0x46,	 0x5a,	 0x47,	 0x4b,	 0x50,	 
	        0x5e,	 0x59,	 0x62,	 0x65,	 0x67,	 0x7a,	 0x7c,	 0x7d,	 
	        0x8c,	 0x8b,	 0x94,	 0x9a,	 0xa7,	 0xa6,	 0xa4,	 0xa6,	 
	        0xa2,	 0x94,	 0x8f,	 0x81,	 0x71,	 0x6c,	 0x65,	 0x62,	 
	        0x59,	 0x5d,	 0x5d,	 0x60,	 0x5d,	 0x69,	 0x6c,	 0x6f,	 
	        0x69,	 0x68,	 0x64,	 0x63,	 0x5f,	 0x63,	 0x5e,	 0x5b,	 
	        0x73,	 0x8a,	 0x8f,	 0xa9,	 0xb8,	 0xc0,	 0xc3,	 0xc9,	 
	        0xd4,	 0xc3,	 0xc4,	 0xba,	 0xb4,	 0xb3,	 0xba,	 0xb6,	 
	        0xaf,	 0xbf,	 0xbf,	 0xb9,	 0xbe,	 0xb2,	 0xaf,	 0xb0,	 
	        0xa2,	 0x93,	 0x85,	 0x6f,	 0x5d,	 0x49,	 0x4f,	 0x47,	 
	        0x39,	 0x48,	 0x51,	 0x69,	 0x6d,	 0x76,	 0x70,	 0x73,	 
	        0x77,	 0x73,	 0x6a,	 0x63,	 0x65,	 0x58,	 0x65,	 0x6a,	 
	        0x71,	 0x75,	 0x86,	 0x95,	 0x9c,	 0xa0,	 0x99,	 0x9e,	 
	        0xb3,	 0xab,	 0xa2,	 0x98,	 0x99,	 0x89,	 0x79,	 0x71,	 
	        0x6d,	 0x68,	 0x70,	 0x78,	 0x91,	 0x70,	 0x80,	 0x93,	 
	        0xb0,	 0x74,	 0x78,	 0x55,	 0x75,	 0x9c,	 0x7b,	 0x61,	 
	        0x40,	 0x77,	 0x78,	 0x6a,	 0x96,	 0x7b,	 0x6d,	 0x96,	 
	        0xbf,	 0x80,	 0xb7,	 0xc0,	 0xa4,	 0x91,	 0x80,	 0xd1,	 
	        0xdf,	 0x9a,	 0x79,	 0x71,	 0x6f,	 0x7e,	 0x88,	 0x8b,	 
	        0x85,	 0x7c,	 0x6f,	 0x70,	 0x68,	 0x54,	 0x37,	 0x43,	 
	        0x51,	 0x3d,	 0x55,	 0x7e,	 0x94,	 0x92,	 0x9e,	 0xb0,	 
	        0xb0,	 0xad,	 0xb4,	 0x9e,	 0xa0,	 0x90,	 0x87,	 0x6d,	 
	        0x9a,	 0x84,	 0x68,	 0x60,	 0x3f,	 0x59,	 0x6b,	 0x6d,	 
	        0x65,	 0x76,	 0x7f,	 0x7b,	 0x88,	 0x87,	 0x9d,	 0xa9,	 
	        0xc0,	 0xb2,	 0xb4,	 0xd0,	 0xcd,	 0xcb,	 0xcb,	 0xb4,	 
	        0xab,	 0xa7,	 0x91,	 0x7e,	 0x79,	 0x64,	 0x61,	 0x4d,	 
	        0x3c,	 0x33,	 0x25,	 0x2c,	 0x28,	 0x2b,	 0x3a,	 0x37,	 
	        0x4f,	 0x54,	 0x66,	 0x7c,	 0x72,	 0x94,	 0xa8,	 0xaf,	 
	        0xb0,	 0xc9,	 0xd1,	 0xd9,	 0xdd,	 0xef,	 0xee,	 0xe9,	 
	        0xde,	 0xde,	 0xd8,	 0xd0,	 0xba,	 0xaf,	 0x9d,	 0x90,	 
	        0x83,	 0x66,	 0x56,	 0x45,	 0x3f,	 0x33,	 0x29,	 0x23,	 
	        0x1e,	 0x20,	 0x19,	 0x16,	 0x12,	 0xc,	 0x10,	 0x11,	 
	        0x1e,	 0x1d,	 0x2c,	 0x3b,	 0x4b,	 0x5b,	 0x66,	 0x70,	 
	        0x82,	 0x95,	 0xa3,	 0xae,	 0xad,	 0xb3,	 0xb0,	 0xac,	 
	        0xab,	 0x9e,	 0x9d,	 0x95,	 0xa4,	 0xa5,	 0xae,	 0xb3,	 
	        0xb0,	 0xb0,	 0xb0,	 0xac,	 0xa3,	 0xa2,	 0xa1,	 0x9f,	 
	        0xa1,	 0xa3,	 0xa1,	 0xa4,	 0xb4,	 0xc9,	 0xd1,	 0xdf,	 
	        0xe4,	 0xe4,	 0xe4,	 0xdf,	 0xd2,	 0xc4,	 0xbe,	 0xaf,	 
	        0xa6,	 0xa2,	 0x96,	 0x8e,	 0x89,	 0x86,	 0x82,	 0x76,	 
	        0x6c,	 0x59,	 0x4f,	 0x44,	 0x37,	 0x2b,	 0x20,	 0x17,	 
	        0x11,	 0x13,	 0x11,	 0x13,	 0x12,	 0x1c,	 0x25,	 0x26,	 
	        0x2c,	 0x26,	 0x25,	 0x23,	 0x24,	 0x26,	 0x2e,	 0x39,	 
	        0x3d,	 0x4a,	 0x4d,	 0x53,	 0x64,	 0x70,	 0x7f,	 0x8c,	 
	        0x9c,	 0xa0,	 0xaa,	 0xb5,	 0xb9,	 0xbb,	 0xba,	 0xbc,	 
	        0xc0,	 0xc2,	 0xc4,	 0xc4,	 0xc5,	 0xd0,	 0xd9,	 0xe2,	 
	        0xe7,	 0xea,	 0xe7,	 0xe3,	 0xe1,	 0xd9,	 0xd0,	 0xcb,	 
	        0xca,	 0xc1,	 0xbf,	 0xb5,	 0xb7,	 0xb7,	 0xbc,	 0xc1,	 
	        0xca,	 0xc9,	 0xc7,	 0xc4,	 0xc0,	 0xb9,	 0xad,	 0xa2,	 
	        0x98,	 0x8e,	 0x89,	 0x85,	 0x82,	 0x8b,	 0x90,	 0x95,	 
	        0x94,	 0x91,	 0x84,	 0x7a,	 0x71,	 0x63,	 0x53,	 0x43,	 
	        0x39,	 0x2d,	 0x24,	 0x19,	 0x19,	 0xf,	 0x12,	 0x19,	 
	        0x14,	 0x1b,	 0x16,	 0x14,	 0x18,	 0x14,	 0x10,	 0x10,	 
	        0x11,	 0x13,	 0x14,	 0x19,	 0x1c,	 0x22,	 0x2f,	 0x3f,	 
	        0x4f,	 0x5a,	 0x62,	 0x67,	 0x6d,	 0x72,	 0x74,	 0x74,	 
	        0x72,	 0x75,	 0x74,	 0x7d,	 0x71,	 0x75,	 0x76,	 0x7e,	 
	        0x8a,	 0x8f,	 0x99,	 0x9a,	 0xa0,	 0x9f,	 0xa3,	 0xa2,	 
	        0x9f,	 0xa2,	 0x9d,	 0xa8,	 0xaa,	 0xae,	 0xb5,	 0xbd,	 
	        0xcb,	 0xd6,	 0xe4,	 0xe3,	 0xe7,	 0xe4,	 0xe1,	 0xde,	 
	        0xd2,	 0xc8,	 0xc1,	 0xc1,	 0xbc,	 0xbf,	 0xc4,	 0xcc,	 
	        0xd2,	 0xd7,	 0xd9,	 0xd2,	 0xc5,	 0xc4,	 0xb9,	 0xac,	 
	        0xa0,	 0x95,	 0x8d,	 0x86,	 0x88,	 0x81,	 0x80,	 0x80,	 
	        0x84,	 0x85,	 0x83,	 0x7e,	 0x69,	 0x66,	 0x5d,	 0x51,	 
	        0x44,	 0x40,	 0x36,	 0x32,	 0x3b,	 0x34,	 0x33,	 0x39,	 
	        0x41,	 0x4c,	 0x52,	 0x52,	 0x4d,	 0x4a,	 0x49,	 0x44,	 
	        0x3a,	 0x3a,	 0x2f,	 0x26,	 0x33,	 0x2a,	 0x27,	 0x29,	 
	        0x2c,	 0x37,	 0x3b,	 0x41,	 0x3e,	 0x3c,	 0x3a,	 0x35,	 
	        0x35,	 0x2e,	 0x2b,	 0x23,	 0x29,	 0x30,	 0x29,	 0x30,	 
	        0x3e,	 0x44,	 0x56,	 0x64,	 0x6d,	 0x70,	 0x75,	 0x77,	 
	        0x77,	 0x76,	 0x79,	 0x72,	 0x71,	 0x81,	 0x82,	 0x8d,	 
	        0x9d,	 0xaf,	 0xbc,	 0xc5,	 0xd1,	 0xc4,	 0xc4,	 0xba,	 
	        0xb7,	 0xb3,	 0xac,	 0xac,	 0xa2,	 0xab,	 0xb1,	 0xb4,	 
	        0xbc,	 0xc7,	 0xcd,	 0xd4,	 0xd9,	 0xd5,	 0xcf,	 0xcb,	 
	        0xcf,	 0xc7,	 0xc8,	 0xc7,	 0xc5,	 0xcb,	 0xcc,	 0xcd,	 
	        0xd2,	 0xd7,	 0xe2,	 0xe7,	 0xec,	 0xea,	 0xe1,	 0xe0,	 
	        0xd9,	 0xd2,	 0xcc,	 0xc4,	 0xc2,	 0xb9,	 0xb7,	 0xb0,	 
	        0xad,	 0xac,	 0xab,	 0xaf,	 0xaf,	 0xb0,	 0xa8,	 0xa8,	 
	        0x9b,	 0x95,	 0x8b,	 0x81,	 0x72,	 0x6d,	 0x6c,	 0x63,	 
	        0x64,	 0x61,	 0x64,	 0x68,	 0x6c,	 0x75,	 0x6c,	 0x6a,	 
	        0x63,	 0x59,	 0x53,	 0x4a,	 0x3b,	 0x33,	 0x34,	 0x32,	 
	        0x30,	 0x38,	 0x46,	 0x49,	 0x54,	 0x52,	 0x4e,	 0x42,	 
	        0x3a,	 0x32,	 0x27,	 0x1e,	 0x13,	 0x10,	 0x12,	 0x13,	 
	        0x19,	 0x1c,	 0x1f,	 0x26,	 0x2c,	 0x33,	 0x31,	 0x28,	 
	        0x27,	 0x21,	 0x21,	 0x20,	 0x1d,	 0x1e,	 0x22,	 0x31,	 
	        0x36,	 0x3c,	 0x49,	 0x59,	 0x67,	 0x70,	 0x78,	 0x77,	 
	        0x7e,	 0x80,	 0x7c,	 0x7b,	 0x79,	 0x73,	 0x71,	 0x7c,	 
	        0x80,	 0x81,	 0x8a,	 0x92,	 0x9e,	 0xa3,	 0xab,	 0xab,	 
	        0xad,	 0xb2,	 0xb1,	 0xb1,	 0xb1,	 0xab,	 0xaa,	 0xae,	 
	        0xb8,	 0xba,	 0xc1,	 0xcc,	 0xd7,	 0xe2,	 0xf1,	 0xf4,	 
	        0xf2,	 0xf7,	 0xf3,	 0xea,	 0xef,	 0xe5,	 0xd8,	 0xd6,	 
	        0xe1,	 0xd9,	 0xdc,	 0xe4,	 0xeb,	 0xef,	 0xf0,	 0xee,	 
	        0xdc,	 0xdb,	 0xcd,	 0xc1,	 0xb7,	 0xa9,	 0x9e,	 0x93,	 
	        0x9c,	 0x94,	 0x95,	 0x97,	 0x96,	 0x96,	 0x9a,	 0x9a,	 
	        0x88,	 0x82,	 0x7b,	 0x71,	 0x6a,	 0x61,	 0x5a,	 0x50,	 
	        0x5e,	 0x5a,	 0x58,	 0x5f,	 0x60,	 0x63,	 0x69,	 0x6e,	 
	        0x64,	 0x5b,	 0x5a,	 0x53,	 0x4a,	 0x42,	 0x38,	 0x2c,	 
	        0x2f,	 0x34,	 0x30,	 0x33,	 0x37,	 0x33,	 0x32,	 0x37,	 
	        0x3a,	 0x2c,	 0x30,	 0x2d,	 0x27,	 0x29,	 0x22,	 0x1b,	 
	        0x1c,	 0x27,	 0x25,	 0x2f,	 0x37,	 0x3e,	 0x43,	 0x50,	 
	        0x59,	 0x53,	 0x57,	 0x58,	 0x57,	 0x57,	 0x56,	 0x51,	 
	        0x4d,	 0x5c,	 0x5f,	 0x64,	 0x72,	 0x7b,	 0x84,	 0x8d,	 
	        0x94,	 0x87,	 0x86,	 0x81,	 0x79,	 0x77,	 0x72,	 0x6b,	 
	        0x65,	 0x6d,	 0x74,	 0x78,	 0x80,	 0x88,	 0x8d,	 0x96,	 
	        0x9e,	 0x9a,	 0x93,	 0x90,	 0x94,	 0x8e,	 0x8f,	 0x8a,	 
	        0x84,	 0x90,	 0x9e,	 0xa0,	 0xaa,	 0xb7,	 0xba,	 0xc7,	 
	        0xcf,	 0xd3,	 0xcc,	 0xcd,	 0xca,	 0xc9,	 0xc6,	 0xbc,	 
	        0xb7,	 0xb3,	 0xb9,	 0xb7,	 0xb8,	 0xbb,	 0xc0,	 0xc1,	 
	        0xc5,	 0xc8,	 0xbc,	 0xbc,	 0xb7,	 0xb2,	 0xae,	 0xa6,	 
	        0xa3,	 0x99,	 0xa1,	 0xa1,	 0xa1,	 0xa7,	 0xae,	 0xb4,	 
	        0xb6,	 0xc2,	 0xbe,	 0xbd,	 0xc0,	 0xb3,	 0xae,	 0xa5,	 
	        0xa1,	 0x96,	 0x97,	 0x98,	 0x92,	 0x9a,	 0x9b,	 0xa0,	 
	        0xa5,	 0xa7,	 0x9d,	 0x90,	 0x8b,	 0x79,	 0x6a,	 0x5c,	 
	        0x51,	 0x44,	 0x3a,	 0x3c,	 0x3a,	 0x39,	 0x40,	 0x41,	 
	        0x49,	 0x47,	 0x45,	 0x3e,	 0x3b,	 0x32,	 0x2d,	 0x29,	 
	        0x25,	 0x1d,	 0x1c,	 0x26,	 0x26,	 0x28,	 0x37,	 0x3e,	 
	        0x45,	 0x50,	 0x57,	 0x51,	 0x54,	 0x51,	 0x4d,	 0x4a,	 
	        0x3f,	 0x41,	 0x37,	 0x3a,	 0x3a,	 0x3d,	 0x47,	 0x4a,	 
	        0x4e,	 0x57,	 0x5b,	 0x56,	 0x5a,	 0x5f,	 0x5b,	 0x5a,	 
	        0x58,	 0x5b,	 0x57,	 0x59,	 0x60,	 0x65,	 0x6e,	 0x7d,	 
	        0x85,	 0x93,	 0x9b,	 0xa5,	 0xad,	 0xb1,	 0xb2,	 0xb2,	 
	        0xad,	 0xad,	 0xa9,	 0xa4,	 0xa8,	 0xaa,	 0xb0,	 0xb9,	 
	        0xc0,	 0xc9,	 0xcf,	 0xd1,	 0xd1,	 0xc9,	 0xc5,	 0xb7,	 
	        0xaf,	 0xa5,	 0x9a,	 0x91,	 0x90,	 0x90,	 0x96,	 0x9d,	 
	        0xa9,	 0xac,	 0xb3,	 0xb4,	 0xb1,	 0xb0,	 0xab,	 0xa0,	 
	        0x9c,	 0x93,	 0x8d,	 0x86,	 0x88,	 0x8d,	 0x95,	 0xa1,	 
	        0xab,	 0xaf,	 0xba,	 0xbb,	 0xbf,	 0xb7,	 0xb3,	 0xaa,	 
	        0xa1,	 0x9b,	 0x92,	 0x8a,	 0x87,	 0x88,	 0x88,	 0x8d,	 
	        0x93,	 0x91,	 0x94,	 0x95,	 0x90,	 0x8d,	 0x86,	 0x80,	 
	        0x78,	 0x6d,	 0x6a,	 0x60,	 0x60,	 0x5f,	 0x60,	 0x65,	 
	        0x6c,	 0x73,	 0x77,	 0x7c,	 0x7e,	 0x7e,	 0x7c,	 0x78,	 
	        0x73,	 0x6c,	 0x6a,	 0x61,	 0x5f,	 0x60,	 0x61,	 0x62,	 
	        0x6a,	 0x6c,	 0x6e,	 0x72,	 0x75,	 0x6c,	 0x69,	 0x61,	 
	        0x57,	 0x4c,	 0x44,	 0x39,	 0x32,	 0x32,	 0x31,	 0x37,	 
	        0x3f,	 0x48,	 0x50,	 0x57,	 0x61,	 0x5f,	 0x5c,	 0x5b,	 
	        0x58,	 0x4f,	 0x4f,	 0x4b,	 0x4a,	 0x4b,	 0x50,	 0x59,	 
	        0x67,	 0x70,	 0x7e,	 0x85,	 0x93,	 0x90,	 0x91,	 0x8e,	 
	        0x91,	 0x81,	 0x7f,	 0x79,	 0x73,	 0x75,	 0x76,	 0x7d,	 
	        0x82,	 0x8b,	 0x90,	 0x95,	 0x9a,	 0x9c,	 0x98,	 0x98,	 
	        0x96,	 0x92,	 0x8e,	 0x8d,	 0x82,	 0x86,	 0x86,	 0x89,	 
	        0x93,	 0x9a,	 0xa0,	 0xa8,	 0xb1,	 0xb6,	 0xb4,	 0xb6,	 
	        0xb6,	 0xaf,	 0xab,	 0xa7,	 0xa1,	 0x9d,	 0x9e,	 0x9e,	 
	        0x9e,	 0xa4,	 0xa5,	 0xa7,	 0xac,	 0xae,	 0xa8,	 0xa5,	 
	        0x9c,	 0x97,	 0x89,	 0x7f,	 0x75,	 0x69,	 0x67,	 0x64,	 
	        0x63,	 0x6c,	 0x74,	 0x79,	 0x83,	 0x8d,	 0x8e,	 0x8e,	 
	        0x8c,	 0x87,	 0x7d,	 0x79,	 0x73,	 0x68,	 0x66,	 0x69,	 
	        0x66,	 0x75,	 0x7a,	 0x86,	 0x8d,	 0x95,	 0x97,	 0x96,	 
	        0x93,	 0x8e,	 0x84,	 0x7b,	 0x79,	 0x6a,	 0x69,	 0x67,	 
	        0x65,	 0x69,	 0x6f,	 0x70,	 0x79,	 0x7d,	 0x7d,	 0x7a,	 
	        0x7b,	 0x76,	 0x72,	 0x6b,	 0x66,	 0x62,	 0x5c,	 0x5f,	 
	        0x64,	 0x66,	 0x72,	 0x78,	 0x80,	 0x89,	 0x90,	 0x90,	 
	        0x91,	 0x92,	 0x8d,	 0x8a,	 0x84,	 0x81,	 0x7b,	 0x7d,	 
	        0x7c,	 0x80,	 0x85,	 0x8a,	 0x8f,	 0x94,	 0x99,	 0x91,	 
	        0x93,	 0x89,	 0x83,	 0x7b,	 0x6d,	 0x68,	 0x5c,	 0x5a,	 
	        0x5d,	 0x57,	 0x62,	 0x6a,	 0x73,	 0x7a,	 0x88,	 0x88,	 
	        0x89,	 0x89,	 0x86,	 0x7d,	 0x79,	 0x73,	 0x6d,	 0x6c,	 
	        0x76,	 0x71,	 0x7e,	 0x82,	 0x92,	 0x97,	 0xa4,	 0xa5,	 
	        0xa7,	 0xa4,	 0x9f,	 0x99,	 0x8b,	 0x87,	 0x7d,	 0x77,	 
	        0x78,	 0x7c,	 0x7d,	 0x82,	 0x8d,	 0x8d,	 0x96,	 0x97,	 
	        0x91,	 0x94,	 0x8b,	 0x84,	 0x7c,	 0x78,	 0x74,	 0x6c,	 
	        0x71,	 0x73,	 0x76,	 0x7c,	 0x84,	 0x88,	 0x8e,	 0x98,	 
	        0x92,	 0x97,	 0x93,	 0x91,	 0x8c,	 0x85,	 0x80,	 0x7a,	 
	        0x77,	 0x7e,	 0x7b,	 0x7e,	 0x82,	 0x81,	 0x86,	 0x8b,	 
	        0x83,	 0x81,	 0x7d,	 0x73,	 0x6b,	 0x60,	 0x56,	 0x4b,	 
	        0x46,	 0x47,	 0x46,	 0x4a,	 0x53,	 0x58,	 0x61,	 0x6e,	 
	        0x6d,	 0x71,	 0x74,	 0x71,	 0x6c,	 0x69,	 0x66,	 0x5f,	 
	        0x60,	 0x63,	 0x69,	 0x6c,	 0x74,	 0x7e,	 0x84,	 0x95,	 
	        0x9a,	 0x99,	 0x9c,	 0x9a,	 0x95,	 0x91,	 0x8e,	 0x84,	 
	        0x83,	 0x81,	 0x84,	 0x86,	 0x89,	 0x91,	 0x92,	 0x9c,	 
	        0x9e,	 0x9b,	 0x98,	 0x99,	 0x94,	 0x8a,	 0x8b,	 0x82,	 
	        0x85,	 0x80,	 0x87,	 0x87,	 0x91,	 0x97,	 0x9b,	 0xa5,	 
	        0xac,	 0xab,	 0xae,	 0xae,	 0xaf,	 0xa8,	 0xa5,	 0xa0,	 
	        0x99,	 0x9b,	 0xa0,	 0xa0,	 0x9f,	 0xa9,	 0xaa,	 0xad,	 
	        0xad,	 0xac,	 0xa8,	 0x9e,	 0x9a,	 0x90,	 0x86,	 0x77,	 
	        0x6c,	 0x68,	 0x64,	 0x64,	 0x65,	 0x68,	 0x6d,	 0x70,	 
	        0x76,	 0x78,	 0x79,	 0x75,	 0x75,	 0x6a,	 0x67,	 0x62,	 
	        0x59,	 0x59,	 0x5a,	 0x5b,	 0x62,	 0x65,	 0x6f,	 0x73,	 
	        0x7b,	 0x7f,	 0x80,	 0x7e,	 0x81,	 0x79,	 0x73,	 0x6b,	 
	        0x65,	 0x5d,	 0x5f,	 0x5c,	 0x5e,	 0x5e,	 0x68,	 0x6c,	 
	        0x70,	 0x75,	 0x73,	 0x70,	 0x6f,	 0x68,	 0x61,	 0x5e,	 
	        0x58,	 0x54,	 0x57,	 0x5a,	 0x5a,	 0x63,	 0x69,	 0x6f,	 
	        0x7b,	 0x7f,	 0x86,	 0x81,	 0x86,	 0x85,	 0x81,	 0x7c,	 
	        0x7c,	 0x74,	 0x76,	 0x7c,	 0x7a,	 0x80,	 0x84,	 0x8c,	 
	        0x88,	 0x8e,	 0x8d,	 0x87,	 0x83,	 0x81,	 0x7c,	 0x70,	 
	        0x66,	 0x5c,	 0x59,	 0x59,	 0x5c,	 0x57,	 0x5d,	 0x65,	 
	        0x67,	 0x75,	 0x7a,	 0x7e,	 0x82,	 0x85,	 0x85,	 0x86,	 
	        0x7c,	 0x80,	 0x7c,	 0x84,	 0x86,	 0x8c,	 0x8e,	 0x98,	 
	        0xa2,	 0xac,	 0xb2,	 0xb9,	 0xb6,	 0xb9,	 0xb9,	 0xb2,	 
	        0xad,	 0xa8,	 0xa4,	 0xa3,	 0xa9,	 0xa4,	 0xa6,	 0xa9,	 
	        0xb0,	 0xb1,	 0xb2,	 0xaf,	 0xad,	 0xab,	 0xa5,	 0x9b,	 
	        0x96,	 0x8c,	 0x87,	 0x89,	 0x8e,	 0x91,	 0x91,	 0x97,	 
	        0xa1,	 0xa4,	 0xa9,	 0xad,	 0xad,	 0xab,	 0xab,	 0xaa,	 
	        0x9e,	 0x9d,	 0x96,	 0x94,	 0x93,	 0x9a,	 0x99,	 0x9b,	 
	        0xa4,	 0xa3,	 0xa3,	 0xa1,	 0x9c,	 0x92,	 0x8d,	 0x81,	 
	        0x78,	 0x64,	 0x5d,	 0x53,	 0x50,	 0x49,	 0x48,	 0x44,	 
	        0x49,	 0x4c,	 0x4c,	 0x4c,	 0x48,	 0x4b,	 0x49,	 0x48,	 
	        0x3c,	 0x36,	 0x32,	 0x2e,	 0x32,	 0x38,	 0x3b,	 0x3d,	 
	        0x44,	 0x4d,	 0x55,	 0x5c,	 0x60,	 0x65,	 0x68,	 0x66,	 
	        0x66,	 0x61,	 0x5a,	 0x56,	 0x54,	 0x59,	 0x5c,	 0x5f,	 
	        0x61,	 0x68,	 0x69,	 0x70,	 0x74,	 0x73,	 0x73,	 0x6f,	 
	        0x6f,	 0x66,	 0x61,	 0x62,	 0x5b,	 0x5f,	 0x60,	 0x68,	 
	        0x6b,	 0x78,	 0x7e,	 0x8b,	 0x92,	 0x9f,	 0xa6,	 0xad,	 
	        0x9f,	 0x8a,	 0x92,	 0x92,	 0x95,	 0xa0,	 0xa7,	 0xaf,	 
	        0xb3,	 0xbf,	 0xc2,	 0xca,	 0xbd,	 0xab,	 0xa6,	 0x9a,	 
	        0x7a,	 0x7a,	 0x70,	 0x6a,	 0x62,	 0x62,	 0x64,	 0x67,	 
	        0x6d,	 0x6b,	 0x73,	 0x74,	 0x80,	 0x89,	 0x8f,	 0x7d,	 
	        0x7f,	 0x80,	 0x82,	 0x7d,	 0x87,	 0x88,	 0x8b,	 0x94,	 
	        0x91,	 0x9f,	 0xad,	 0xa9,	 0xbf,	 0xbf,	 0xbc,	 0xbc,	 
	        0x9f,	 0xaa,	 0x83,	 0x88,	 0x8f,	 0xa3,	 0x95,	 0xb7,	 
	        0x9e,	 0x91,	 0xaf,	 0xc4,	 0xc1,	 0xd8,	 0xbe,	 0x92,	 
	        0xb9,	 0x9b,	 0xa5,	 0x9b,	 0xba,	 0xa9,	 0x9f,	 0xaf,	 
	        0x96,	 0xb8,	 0xa3,	 0xab,	 0xb7,	 0xa3,	 0x8f,	 0x8e,	 
	        0x73,	 0x7e,	 0x79,	 0x65,	 0x66,	 0x48,	 0x67,	 0x3c,	 
	        0x78,	 0x99,	 0x93,	 0x95,	 0x8a,	 0x5e,	 0x41,	 0x48,	 
	        0x3d,	 0x4e,	 0x49,	 0x49,	 0x31,	 0x60,	 0x6a,	 0x83,	 
	        0x89,	 0x8b,	 0x95,	 0x98,	 0x84,	 0x6d,	 0x6c,	 0x6e,	 
	        0x94,	 0x82,	 0x84,	 0x78,	 0x70,	 0x86,	 0x7e,	 0x72,	 
	        0x5d,	 0x60,	 0x51,	 0x46,	 0x42,	 0x3f,	 0x42,	 0x47,	 
	        0x53,	 0x3b,	 0x30,	 0x3b,	 0x5a,	 0x5d,	 0x69,	 0x6b,	 
	        0x72,	 0x7f,	 0x98,	 0x97,	 0x8c,	 0x83,	 0x75,	 0x76,	 
	        0x72,	 0x6e,	 0x5f,	 0x72,	 0x80,	 0x96,	 0x92,	 0x9d,	 
	        0x99,	 0x9f,	 0x93,	 0x6d,	 0x59,	 0x41,	 0x48,	 0x3b,	 
	        0x32,	 0x40,	 0x5e,	 0x6c,	 0x75,	 0x84,	 0x70,	 0x73,	 
	        0x8c,	 0x89,	 0x7f,	 0x7b,	 0x7e,	 0x84,	 0x96,	 0xa9,	 
	        0xa8,	 0xac,	 0xc0,	 0xc1,	 0xcf,	 0xc4,	 0xca,	 0xd3,	 
	        0xdf,	 0xd7,	 0xc9,	 0xbf,	 0xbd,	 0xb5,	 0xb5,	 0xaf,	 
	        0x9b,	 0x9e,	 0x97,	 0x97,	 0x88,	 0x92,	 0xa7,	 0xa5,	 
	        0x9d,	 0x7e,	 0x65,	 0x5a,	 0x57,	 0x64,	 0x69,	 0x64,	 
	        0x72,	 0x80,	 0x9b,	 0xb1,	 0xba,	 0xca,	 0xd6,	 0xc1,	 
	        0x9e,	 0x8a,	 0x7b,	 0x76,	 0x79,	 0x83,	 0x84,	 0x83,	 
	        0x94,	 0x8a,	 0x95,	 0x88,	 0x8e,	 0x80,	 0x6c,	 0x5b,	 
	        0x3f,	 0x26,	 0x36,	 0x36,	 0x44,	 0x3a,	 0x35,	 0x2f,	 
	        0x3c,	 0x51,	 0x58,	 0x63,	 0x79,	 0x78,	 0x73,	 0x6b,	 
	        0x65,	 0x6c,	 0x6e,	 0x73,	 0x80,	 0x76,	 0x86,	 0x9a,	 
	        0xa5,	 0xbe,	 0xc2,	 0xcc,	 0xd8,	 0xc3,	 0xab,	 0x91,	 
	        0x7d,	 0x67,	 0x55,	 0x48,	 0x37,	 0x36,	 0x46,	 0x54,	 
	        0x5f,	 0x5c,	 0x61,	 0x62,	 0x52,	 0x42,	 0x41,	 0x29,	 
	        0x20,	 0x21,	 0x23,	 0x29,	 0x3d,	 0x60,	 0x6f,	 0x77,	 
	        0x7d,	 0x8a,	 0x8f,	 0x8a,	 0x7b,	 0x6e,	 0x67,	 0x63,	 
	        0x5f,	 0x5b,	 0x60,	 0x64,	 0x6f,	 0x6b,	 0x74,	 0x78,	 
	        0x84,	 0x83,	 0x74,	 0x78,	 0x63,	 0x59,	 0x49,	 0x46,	 
	        0x31,	 0x39,	 0x4a,	 0x5c,	 0x6a,	 0x84,	 0x95,	 0xa3,	 
	        0xb5,	 0xbe,	 0xbc,	 0xb5,	 0xaa,	 0x9d,	 0x96,	 0x9d,	 
	        0xa1,	 0xb6,	 0xc1,	 0xd0,	 0xe1,	 0xe5,	 0xe6,	 0xe6,	 
	        0xe5,	 0xdd,	 0xc5,	 0xae,	 0x99,	 0x8a,	 0x7f,	 0x77,	 
	        0x89,	 0x81,	 0x87,	 0x92,	 0x93,	 0x98,	 0x9a,	 0xa7,	 
	        0x9b,	 0x94,	 0x84,	 0x79,	 0x7f,	 0x81,	 0x82,	 0x8b,	 
	        0x8c,	 0x8c,	 0x91,	 0x9b,	 0x9e,	 0xa6,	 0xaf,	 0xb0,	 
	        0xb1,	 0x90,	 0x81,	 0x75,	 0x64,	 0x5f,	 0x55,	 0x51,	 
	        0x4a,	 0x64,	 0x6c,	 0x7a,	 0x81,	 0x92,	 0x91,	 0x8c,	 
	        0x77,	 0x54,	 0x50,	 0x4f,	 0x59,	 0x53,	 0x64,	 0x63,	 
	        0x79,	 0x8c,	 0x9a,	 0xa4,	 0xb5,	 0xb5,	 0xb3,	 0xac,	 
	        0xa7,	 0x9d,	 0x96,	 0x9a,	 0x89,	 0x9b,	 0x98,	 0x97,	 
	        0x9c,	 0xa2,	 0x9f,	 0x96,	 0x93,	 0x80,	 0x79,	 0x5f,	 
	        0x50,	 0x48,	 0x3e,	 0x32,	 0x39,	 0x2e,	 0x2f,	 0x3f,	 
	        0x51,	 0x54,	 0x55,	 0x5e,	 0x58,	 0x69,	 0x61,	 0x5c,	 
	        0x4a,	 0x43,	 0x39,	 0x3b,	 0x3f,	 0x41,	 0x51,	 0x5f,	 
	        0x6f,	 0x74,	 0x7b,	 0x71,	 0x81,	 0x64,	 0x54,	 0x3d,	 
	        0x2f,	 0x2a,	 0x30,	 0x33,	 0x30,	 0x44,	 0x4f,	 0x5a,	 
	        0x66,	 0x6b,	 0x65,	 0x72,	 0x78,	 0x6f,	 0x65,	 0x65,	 
	        0x6c,	 0x72,	 0x81,	 0x89,	 0x94,	 0xa8,	 0xb6,	 0xbc,	 
	        0xd1,	 0xd8,	 0xda,	 0xde,	 0xd4,	 0xc8,	 0xbc,	 0xb7,	 
	        0xb0,	 0xad,	 0xac,	 0xa9,	 0xa5,	 0xaf,	 0xb2,	 0xb1,	 
	        0xb4,	 0xaf,	 0xac,	 0x97,	 0x80,	 0x68,	 0x5d,	 0x58,	 
	        0x59,	 0x6a,	 0x66,	 0x78,	 0x8d,	 0x9d,	 0xb1,	 0xc4,	 
	        0xc8,	 0xcd,	 0xc7,	 0xab,	 0x93,	 0x83,	 0x7d,	 0x78,	 
	        0x8a,	 0x7e,	 0x89,	 0x97,	 0xa1,	 0xa5,	 0xa6,	 0x9f,	 
	        0x9c,	 0x96,	 0x82,	 0x70,	 0x59,	 0x57,	 0x52,	 0x59,	 
	        0x5a,	 0x61,	 0x68,	 0x70,	 0x8f,	 0x96,	 0xa2,	 0xa7,	 
	        0xb8,	 0xa4,	 0xa0,	 0x8f,	 0x85,	 0x81,	 0x8d,	 0x93,	 
	        0x96,	 0xb3,	 0xcb,	 0xda,	 0xe2,	 0xe7,	 0xdf,	 0xe3,	 
	        0xd5,	 0xc5,	 0xaa,	 0x98,	 0x8c,	 0x76,	 0x72,	 0x67,	 
	        0x68,	 0x75,	 0x7b,	 0x7f,	 0x87,	 0x7d,	 0x74,	 0x67,	 
	        0x4f,	 0x3c,	 0x31,	 0x1d,	 0xe,	 0x19,	 0x20,	 0x2b,	 
	        0x40,	 0x58,	 0x64,	 0x6d,	 0x76,	 0x6d,	 0x79,	 0x67,	 
	        0x59,	 0x46,	 0x3f,	 0x37,	 0x3b,	 0x38,	 0x36,	 0x3f,	 
	        0x4c,	 0x4e,	 0x4d,	 0x5d,	 0x5d,	 0x61,	 0x5d,	 0x4c,	 
	        0x3a,	 0x30,	 0x2c,	 0x24,	 0x28,	 0x32,	 0x3f,	 0x51,	 
	        0x60,	 0x69,	 0x7b,	 0x81,	 0x8a,	 0x94,	 0x84,	 0x7a,	 
	        0x72,	 0x73,	 0x7f,	 0x94,	 0x93,	 0xa3,	 0xb1,	 0xbf,	 
	        0xc9,	 0xcd,	 0xd1,	 0xcd,	 0xd3,	 0xc2,	 0xa2,	 0x85,	 
	        0x74,	 0x65,	 0x66,	 0x5f,	 0x5b,	 0x62,	 0x63,	 0x67,	 
	        0x68,	 0x72,	 0x77,	 0x83,	 0x74,	 0x6a,	 0x5e,	 0x59,	 
	        0x5b,	 0x5b,	 0x68,	 0x6c,	 0x6d,	 0x79,	 0x7e,	 0x86,	 
	        0x92,	 0x93,	 0x99,	 0x9c,	 0x93,	 0x80,	 0x79,	 0x70,	 
	        0x64,	 0x70,	 0x67,	 0x65,	 0x7f,	 0x8b,	 0x8f,	 0x9e,	 
	        0xa7,	 0x9c,	 0xa5,	 0xa3,	 0x7d,	 0x77,	 0x7f,	 0x75,	 
	        0x81,	 0x87,	 0x85,	 0x94,	 0xad,	 0xaf,	 0xb9,	 0xc1,	 
	        0xc3,	 0xd0,	 0xd9,	 0xd8,	 0xd7,	 0xcf,	 0xcc,	 0xcb,	 
	        0xd2,	 0xc8,	 0xcf,	 0xd7,	 0xdd,	 0xe2,	 0xdd,	 0xd3,	 
	        0xd2,	 0xd1,	 0xbe,	 0xa9,	 0xa1,	 0x93,	 0x89,	 0x89,	 
	        0x78,	 0x76,	 0x77,	 0x89,	 0x82,	 0x7a,	 0x7b,	 0x77,	 
	        0x8c,	 0x81,	 0x76,	 0x6d,	 0x5f,	 0x59,	 0x5f,	 0x5d,	 
	        0x5a,	 0x63,	 0x6f,	 0x76,	 0x7b,	 0x83,	 0x7f,	 0x85,	 
	        0x80,	 0x71,	 0x5e,	 0x4e,	 0x3e,	 0x49,	 0x53,	 0x53,	 
	        0x59,	 0x64,	 0x6c,	 0x71,	 0x86,	 0x70,	 0x7b,	 0x82,	 
	        0x83,	 0x6b,	 0x63,	 0x5a,	 0x5b,	 0x69,	 0x67,	 0x6c,	 
	        0x76,	 0x8b,	 0x91,	 0xac,	 0xc2,	 0xbb,	 0xc5,	 0xbd,	 
	        0xab,	 0x99,	 0x92,	 0x81,	 0x87,	 0x86,	 0x7d,	 0x7f,	 
	        0x85,	 0x80,	 0x86,	 0x88,	 0x7d,	 0x86,	 0x76,	 0x5a,	 
	        0x45,	 0x36,	 0x2c,	 0x2f,	 0x47,	 0x32,	 0x36,	 0x46,	 
	        0x57,	 0x61,	 0x76,	 0x76,	 0x79,	 0x79,	 0x62,	 0x4b,	 
	        0x38,	 0x31,	 0x29,	 0x36,	 0x32,	 0x38,	 0x46,	 0x4f,	 
	        0x5d,	 0x61,	 0x65,	 0x5e,	 0x62,	 0x4f,	 0x46,	 0x39,	 
	        0x35,	 0x2f,	 0x36,	 0x3c,	 0x3c,	 0x4b,	 0x4e,	 0x64,	 
	        0x78,	 0x87,	 0x88,	 0x8e,	 0x8b,	 0x87,	 0x7e,	 0x75,	 
	        0x71,	 0x74,	 0x81,	 0x84,	 0xa5,	 0xb8,	 0xc9,	 0xd3,	 
	        0xd8,	 0xdd,	 0xd6,	 0xd5,	 0xc7,	 0xb2,	 0xab,	 0x9f,	 
	        0x89,	 0x88,	 0x86,	 0x84,	 0x8b,	 0x98,	 0x9d,	 0xa1,	 
	        0xa0,	 0x91,	 0x95,	 0x7d,	 0x77,	 0x6c,	 0x58,	 0x44,	 
	        0x49,	 0x4e,	 0x54,	 0x68,	 0x81,	 0x87,	 0x93,	 0xa0,	 
	        0x9f,	 0xa7,	 0xa6,	 0x9b,	 0x8c,	 0x82,	 0x77,	 0x72,	 
	        0x82,	 0x77,	 0x7c,	 0x8a,	 0x8f,	 0x92,	 0x9d,	 0xa7,	 
	        0xa1,	 0xa9,	 0x9e,	 0x8a,	 0x80,	 0x70,	 0x68,	 0x64,	 
	        0x72,	 0x82,	 0x91,	 0x98,	 0xa4,	 0xac,	 0xc0,	 0xbc,	 
	        0xc9,	 0xbd,	 0xb8,	 0xaa,	 0xa9,	 0xb3,	 0xbe,	 0xcd,	 
	        0xcd,	 0xd8,	 0xdd,	 0xe2,	 0xe8,	 0xee,	 0xe8,	 0xe3,	 
	        0xe5,	 0xc3,	 0xb4,	 0x9e,	 0x8f,	 0x83,	 0x84,	 0x7f,	 
	        0x79,	 0x7e,	 0x7c,	 0x7d,	 0x84,	 0x90,	 0x8f,	 0x87,	 
	        0x79,	 0x67,	 0x61,	 0x59,	 0x4f,	 0x58,	 0x5f,	 0x5e,	 
	        0x67,	 0x6a,	 0x72,	 0x76,	 0x85,	 0x7c,	 0x7b,	 0x6f,	 
	        0x6d,	 0x5b,	 0x52,	 0x4c,	 0x3c,	 0x43,	 0x3b,	 0x45,	 
	        0x58,	 0x59,	 0x66,	 0x6d,	 0x74,	 0x6d,	 0x6c,	 0x60,	 
	        0x44,	 0x51,	 0x4e,	 0x44,	 0x4e,	 0x46,	 0x4b,	 0x5e,	 
	        0x5f,	 0x65,	 0x73,	 0x80,	 0x77,	 0x8d,	 0x97,	 0x9c,	 
	        0x99,	 0x8e,	 0x80,	 0x7f,	 0x84,	 0x7c,	 0x82,	 0x8a,	 
	        0x8f,	 0x96,	 0x99,	 0x8c,	 0x88,	 0x81,	 0x74,	 0x6a,	 
	        0x5c,	 0x4d,	 0x3e,	 0x40,	 0x32,	 0x33,	 0x40,	 0x41,	 
	        0x43,	 0x43,	 0x45,	 0x3d,	 0x41,	 0x3d,	 0x3a,	 0x31,	 
	        0x2a,	 0x29,	 0x2d,	 0x36,	 0x39,	 0x3e,	 0x49,	 0x4f,	 
	        0x59,	 0x64,	 0x64,	 0x63,	 0x5e,	 0x54,	 0x4b,	 0x3e,	 
	        0x41,	 0x47,	 0x4f,	 0x56,	 0x60,	 0x6c,	 0x71,	 0x7c,	 
	        0x7d,	 0x81,	 0x8a,	 0x8d,	 0x88,	 0x7c,	 0x77,	 0x72,	 
	        0x73,	 0x77,	 0x7a,	 0x83,	 0x91,	 0x9a,	 0xaf,	 0xc4,	 
	        0xd5,	 0xcf,	 0xd2,	 0xcf,	 0xc1,	 0xbc,	 0xb1,	 0xa8,	 
	        0xa6,	 0xb1,	 0xad,	 0xb2,	 0xb9,	 0xb6,	 0xb9,	 0xc3,	 
	        0xb3,	 0xb4,	 0xaf,	 0x9c,	 0x91,	 0x85,	 0x7b,	 0x7c,	 
	        0x89,	 0x7c,	 0x83,	 0x90,	 0x98,	 0xa5,	 0xae,	 0xaf,	 
	        0xa2,	 0x9f,	 0x92,	 0x83,	 0x7f,	 0x72,	 0x67,	 0x6c,	 
	        0x6d,	 0x6f,	 0x7e,	 0x87,	 0x89,	 0x98,	 0x97,	 0x8a,	 
	        0x83,	 0x83,	 0x79,	 0x73,	 0x6e,	 0x6d,	 0x74,	 0x7f,	 
	        0x83,	 0x85,	 0x95,	 0xa9,	 0xc0,	 0xc6,	 0xc3,	 0xbb,	 
	        0xb7,	 0xb0,	 0x9c,	 0x90,	 0x8e,	 0x8a,	 0x98,	 0xa9,	 
	        0xc2,	 0xd0,	 0xd8,	 0xdd,	 0xde,	 0xde,	 0xce,	 0xc9,	 
	        0xb9,	 0xa4,	 0x98,	 0x8f,	 0x76,	 0x7e,	 0x7d,	 0x79,	 
	        0x82,	 0x88,	 0x8d,	 0x91,	 0x9b,	 0x83,	 0x7d,	 0x70,	 
	        0x6e,	 0x53,	 0x3f,	 0x32,	 0x30,	 0x41,	 0x43,	 0x57,	 
	        0x62,	 0x69,	 0x71,	 0x7f,	 0x7c,	 0x74,	 0x71,	 0x62,	 
	        0x50,	 0x47,	 0x3b,	 0x32,	 0x40,	 0x38,	 0x44,	 0x4c,	 
	        0x56,	 0x4f,	 0x67,	 0x67,	 0x5b,	 0x5f,	 0x58,	 0x49,	 
	        0x40,	 0x3f,	 0x29,	 0x35,	 0x48,	 0x4a,	 0x5c,	 0x69,	 
	        0x71,	 0x7e,	 0x8a,	 0x7c,	 0x81,	 0x7c,	 0x7b,	 0x78,	 
	        0x8b,	 0x93,	 0x96,	 0xa0,	 0x9f,	 0xa3,	 0xad,	 0xb7,	 
	        0xc0,	 0xbd,	 0xba,	 0xaf,	 0xa0,	 0x8d,	 0x7c,	 0x68,	 
	        0x5f,	 0x54,	 0x52,	 0x4e,	 0x4d,	 0x54,	 0x5c,	 0x66,	 
	        0x67,	 0x7f,	 0x65,	 0x59,	 0x51,	 0x43,	 0x40,	 0x3c,	 
	        0x3c,	 0x3d,	 0x48,	 0x47,	 0x55,	 0x59,	 0x65,	 0x6f,	 
	        0x81,	 0x73,	 0x71,	 0x6c,	 0x59,	 0x51,	 0x49,	 0x41,	 
	        0x3d,	 0x46,	 0x45,	 0x51,	 0x5b,	 0x64,	 0x74,	 0x7f,	 
	        0x8b,	 0x82,	 0x87,	 0x72,	 0x74,	 0x74,	 0x71,	 0x68,	 
	        0x76,	 0x75,	 0x7c,	 0x84,	 0x84,	 0x91,	 0xa0,	 0xad,	 
	        0xac,	 0xca,	 0xd0,	 0xc9,	 0xcb,	 0xbb,	 0xae,	 0xb0,	 
	        0xb5,	 0xb1,	 0xb9,	 0xc0,	 0xc6,	 0xc7,	 0xc9,	 0xbc,	 
	        0xb6,	 0xaf,	 0xa3,	 0x95,	 0x86,	 0x7c,	 0x71,	 0x72,	 
	        0x6a,	 0x72,	 0x81,	 0x7c,	 0x77,	 0x7c,	 0x7a,	 0x75,	 
	        0x76,	 0x78,	 0x6e,	 0x65,	 0x64,	 0x58,	 0x5d,	 0x5e,	 
	        0x64,	 0x6d,	 0x76,	 0x7e,	 0x86,	 0x8d,	 0x83,	 0x87,	 
	        0x85,	 0x79,	 0x6f,	 0x6e,	 0x72,	 0x6a,	 0x77,	 0x75,	 
	        0x7f,	 0x8e,	 0x9a,	 0x9d,	 0x9e,	 0xa9,	 0xac,	 0xa9,	 
	        0x9e,	 0x94,	 0x8b,	 0x8a,	 0x81,	 0x8a,	 0x86,	 0x95,	 
	        0x9a,	 0xb3,	 0xc9,	 0xe0,	 0xde,	 0xdb,	 0xd8,	 0xcf,	 
	        0xbf,	 0xb6,	 0xaf,	 0xa5,	 0xb5,	 0xaa,	 0xab,	 0xaa,	 
	        0xa9,	 0xb0,	 0xb3,	 0xb4,	 0xa7,	 0xa5,	 0x98,	 0x88,	 
	        0x7a,	 0x70,	 0x6a,	 0x71,	 0x64,	 0x61,	 0x6a,	 0x6d,	 
	        0x75,	 0x7f,	 0x87,	 0x80,	 0x84,	 0x77,	 0x6a,	 0x5c,	 
	        0x50,	 0x44,	 0x40,	 0x47,	 0x3f,	 0x4d,	 0x5b,	 0x5f,	 
	        0x66,	 0x6a,	 0x68,	 0x5b,	 0x64,	 0x61,	 0x50,	 0x4e,	 
	        0x4a,	 0x46,	 0x54,	 0x5b,	 0x5e,	 0x66,	 0x85,	 0x94,	 
	        0x9e,	 0x9f,	 0x94,	 0x8f,	 0x91,	 0x7a,	 0x6b,	 0x69,	 
	        0x62,	 0x66,	 0x7a,	 0x90,	 0xa5,	 0xb1,	 0xc0,	 0xc6,	 
	        0xca,	 0xb6,	 0xb5,	 0xaa,	 0x96,	 0x89,	 0x7d,	 0x6b,	 
	        0x68,	 0x68,	 0x61,	 0x63,	 0x76,	 0x79,	 0x84,	 0x8e,	 
	        0x7f,	 0x7a,	 0x74,	 0x6a,	 0x5a,	 0x3f,	 0x32,	 0x2a,	 
	        0x35,	 0x31,	 0x3f,	 0x49,	 0x58,	 0x64,	 0x6b,	 0x6d,	 
	        0x69,	 0x62,	 0x57,	 0x46,	 0x39,	 0x29,	 0x25,	 0x2d,	 
	        0x2f,	 0x38,	 0x43,	 0x4c,	 0x52,	 0x67,	 0x6c,	 0x62,	 
	        0x71,	 0x67,	 0x5f,	 0x55,	 0x50,	 0x44,	 0x4a,	 0x5c,	 
	        0x69,	 0x75,	 0x86,	 0x91,	 0x99,	 0xaa,	 0x9b,	 0x9c,	 
	        0xa0,	 0x9f,	 0x93,	 0x9f,	 0x9d,	 0xa8,	 0xb3,	 0xac,	 
	        0xb2,	 0xc0,	 0xc7,	 0xcd,	 0xd9,	 0xca,	 0xc7,	 0xbf,	 
	        0xb6,	 0x9f,	 0x90,	 0x7b,	 0x70,	 0x76,	 0x6e,	 0x75,	 
	        0x72,	 0x81,	 0x89,	 0x92,	 0xa2,	 0x8f,	 0x87,	 0x7c,	 
	        0x72,	 0x6e,	 0x61,	 0x63,	 0x6f,	 0x68,	 0x69,	 0x74,	 
	        0x84,	 0x89,	 0x9c,	 0xa0,	 0x90,	 0xa7,	 0x99,	 0x8f,	 
	        0x85,	 0x83,	 0x77,	 0x7d,	 0x75,	 0x72,	 0x7a,	 0x85,	 
	        0x8a,	 0x95,	 0xa0,	 0x91,	 0xa2,	 0x99,	 0x8e,	 0x7c,	 
	        0x80,	 0x73,	 0x72,	 0x78,	 0x6d,	 0x6f,	 0x77,	 0x7a,	 
	        0x86,	 0x8e,	 0x8a,	 0x8f,	 0x9a,	 0xa4,	 0x98,	 0x98,	 
	        0x8e,	 0x89,	 0x93,	 0x90,	 0x97,	 0x96,	 0xa2,	 0xa0,	 
	        0xa9,	 0xa8,	 0x9e,	 0xa1,	 0xa1,	 0x93,	 0x8e,	 0x84,	 
	        0x74,	 0x82,	 0x7f,	 0x81,	 0x71,	 0x86,	 0x8a,	 0x8a,	 
	        0x8c,	 0x7a,	 0x71,	 0x70,	 0x95,	 0x90,	 0x5d,	 0x5c,	 
	        0x34,	 0x81,	 0x99,	 0x6a,	 0x7e,	 0x6e,	 0x9f,	 0x7c,	 
	        0x82,	 0x77,	 0x72,	 0x40,	 0x9f,	 0x5b,	 0x5c,	 0x91,	 
	        0xa3,	 0x7b,	 0x5a,	 0x72,	 0xda,	 0xb9,	 0x79,	 0x4c,	 
	        0x45,	 0x53,	 0x57,	 0x5c,	 0x61,	 0x5c,	 0x64,	 0x5a,	 
	        0x5a,	 0x5e,	 0x48,	 0x4d,	 0x5e,	 0x80,	 0x81,	 0xa3,	 
	        0xb8,	 0xc5,	 0xc3,	 0xc7,	 0xcf,	 0xbe,	 0xcb,	 0xcd,	 
	        0xd3,	 0xbf,	 0xab,	 0xa2,	 0x9d,	 0xad,	 0x8f,	 0x69,	 
	        0x3e,	 0x36,	 0x2f,	 0x34,	 0x2e,	 0x3d,	 0x48,	 0x4d,	 
	        0x61,	 0x74,	 0x8f,	 0xa2,	 0xbe,	 0xc3,	 0xd7,	 0xde,	 
	        0xdc,	 0xcc,	 0xb6,	 0xa5,	 0x98,	 0x8b,	 0x72,	 0x67,	 
	        0x59,	 0x51,	 0x47,	 0x3b,	 0x25,	 0x20,	 0x19,	 0x11,	 
	        0xd,	 0xb,	 0xc,	 0x13,	 0x20,	 0x2e,	 0x41,	 0x55,	 
	        0x6c,	 0x8a,	 0xa2,	 0xb5,	 0xc6,	 0xd9,	 0xe2,	 0xe9,	 
	        0xeb,	 0xe9,	 0xe6,	 0xed,	 0xe6,	 0xe8,	 0xe9,	 0xeb,	 
	        0xec,	 0xe3,	 0xda,	 0xc4,	 0xb6,	 0x9e,	 0x86,	 0x67,	 
	        0x50,	 0x35,	 0x2a,	 0x1c,	 0x15,	 0x10,	 0x13,	 0x1c,	 
	        0x20,	 0x24,	 0x1f,	 0x24,	 0x29,	 0x2e,	 0x2d,	 0x2b,	 
	        0x27,	 0x2e,	 0x3b,	 0x40,	 0x48,	 0x5a,	 0x6b,	 0x7a,	 
	        0x88,	 0x89,	 0x91,	 0x97,	 0xa2,	 0x9c,	 0x98,	 0x94,	 
	        0x94,	 0xa2,	 0xa5,	 0xab,	 0xb3,	 0xbe,	 0xca,	 0xd1,	 
	        0xd0,	 0xd5,	 0xd9,	 0xdc,	 0xe2,	 0xda,	 0xd2,	 0xcc,	 
	        0xd6,	 0xcd,	 0xce,	 0xcd,	 0xd0,	 0xd1,	 0xd5,	 0xcf,	 
	        0xc9,	 0xbe,	 0xb6,	 0xad,	 0x9d,	 0x8b,	 0x81,	 0x7f,	 
	        0x77,	 0x6c,	 0x65,	 0x60,	 0x5a,	 0x53,	 0x4d,	 0x3f,	 
	        0x3a,	 0x33,	 0x2d,	 0x22,	 0x18,	 0x11,	 0xf,	 0xd,	 
	        0xa,	 0x7,	 0x6,	 0xd,	 0x13,	 0x16,	 0x14,	 0x1b,	 
	        0x1f,	 0x1f,	 0x21,	 0x1f,	 0x21,	 0x24,	 0x34,	 0x39,	 
	        0x43,	 0x52,	 0x61,	 0x79,	 0x89,	 0x95,	 0x9d,	 0xa7,	 
	        0xb2,	 0xb7,	 0xbc,	 0xbc,	 0xbb,	 0xcc,	 0xd0,	 0xd4,	 
	        0xd5,	 0xdf,	 0xeb,	 0xf2,	 0xf5,	 0xf0,	 0xf2,	 0xf0,	 
	        0xef,	 0xef,	 0xe3,	 0xe1,	 0xeb,	 0xe4,	 0xe2,	 0xe0,	 
	        0xdd,	 0xe1,	 0xdd,	 0xd9,	 0xcd,	 0xce,	 0xc4,	 0xc4,	 
	        0xc2,	 0xb6,	 0xac,	 0xaa,	 0xa6,	 0x9b,	 0x97,	 0x90,	 
	        0x90,	 0x90,	 0x8b,	 0x7f,	 0x79,	 0x71,	 0x67,	 0x5e,	 
	        0x52,	 0x45,	 0x40,	 0x39,	 0x32,	 0x2c,	 0x2c,	 0x2a,	 
	        0x31,	 0x30,	 0x25,	 0x22,	 0x23,	 0x22,	 0x1d,	 0x18,	 
	        0x13,	 0xe,	 0x13,	 0x10,	 0x13,	 0x14,	 0x18,	 0x21,	 
	        0x27,	 0x28,	 0x23,	 0x2b,	 0x30,	 0x32,	 0x38,	 0x3a,	 
	        0x39,	 0x41,	 0x4c,	 0x53,	 0x5a,	 0x67,	 0x72,	 0x7f,	 
	        0x8b,	 0x86,	 0x8d,	 0x91,	 0x96,	 0x9b,	 0x9b,	 0x98,	 
	        0xa2,	 0xaa,	 0xad,	 0xb0,	 0xb7,	 0xbc,	 0xc6,	 0xd0,	 
	        0xcf,	 0xdb,	 0xe3,	 0xe5,	 0xe4,	 0xe2,	 0xdc,	 0xd9,	 
	        0xe2,	 0xdb,	 0xdd,	 0xe2,	 0xe8,	 0xea,	 0xf1,	 0xf0,	 
	        0xee,	 0xf0,	 0xed,	 0xe5,	 0xdf,	 0xd7,	 0xcd,	 0xcd,	 
	        0xc2,	 0xc3,	 0xbe,	 0xb9,	 0xb7,	 0xb8,	 0xb4,	 0xa8,	 
	        0xa7,	 0x99,	 0x8f,	 0x85,	 0x78,	 0x6a,	 0x68,	 0x60,	 
	        0x54,	 0x51,	 0x4b,	 0x47,	 0x49,	 0x49,	 0x3e,	 0x40,	 
	        0x3a,	 0x36,	 0x30,	 0x31,	 0x27,	 0x23,	 0x2b,	 0x24,	 
	        0x25,	 0x25,	 0x2a,	 0x2a,	 0x35,	 0x33,	 0x32,	 0x32,	 
	        0x31,	 0x2a,	 0x2a,	 0x21,	 0x17,	 0x1b,	 0x16,	
};


uint32_t DualSine12bit[POINT_NUM];


/**
  * @brief  使能DAC的时钟,初始化GPIO
  * @param  无
  * @retval 无
  */
static void DAC_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
	DAC_InitTypeDef  DAC_InitStructure;

  /* 使能GPIOA时钟 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	
	
	/* 使能DAC时钟 */	
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
	
  /* DAC的GPIO配置,模拟输入 */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
	


  /* 配置DAC 通道1 */
  DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;						//使用TIM2作为触发源
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;	//不使用波形发生器
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;	//不使用DAC输出缓冲
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);

  /* 配置DAC 通道2 */
  DAC_Init(DAC_Channel_2, &DAC_InitStructure);

  /* 使能通道1 由PA4输出 */
  DAC_Cmd(DAC_Channel_1, ENABLE);
  /* 使能通道2 由PA5输出 */
  DAC_Cmd(DAC_Channel_2, ENABLE);

  /* 使能DAC的DMA请求 */
  DAC_DMACmd(DAC_Channel_2, ENABLE);
}


/**
  * @brief  配置TIM
  * @param  无
  * @retval 无
  */
static void DAC_TIM_Config(void)
{
	
	TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
	
	/* 使能TIM2时钟,TIM2CLK 为72M */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	
  /* TIM2基本定时器配置 */
 // TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); 
  TIM_TimeBaseStructure.TIM_Period = (1126-1);       									//定时周期 2000  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;       							//预分频,不分频 72M / (0+1) = 72M
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;    						//时钟分频系数
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  	//向上计数模式
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  /* 配置TIM2触发源 */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

	/* 使能TIM2 */
  TIM_Cmd(TIM2, ENABLE);

}

/**
  * @brief  配置DMA
  * @param  无
  * @retval 无
  */
static void DAC_DMA_Config(void)
{	
	DMA_InitTypeDef  DMA_InitStructure;

	/* 使能DMA2时钟 */
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
	
	/* 配置DMA2 */
  DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_ADDRESS;					//外设数据地址
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit ;				//内存数据地址 DualSine12bit
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;											//数据传输方向内存至外设
  DMA_InitStructure.DMA_BufferSize = POINT_NUM;																	//缓存大小为POINT_NUM字节	
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;				//外设数据地址固定	
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;									//内存数据地址自增
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;	//外设数据以字为单位
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;					//内存数据以字为单位	
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;													//循环模式
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;											//高DMA通道优先级
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;														//非内存至内存模式	

  DMA_Init(DMA2_Channel4, &DMA_InitStructure);
	
  /* 使能DMA2-14通道 */
  DMA_Cmd(DMA2_Channel4, ENABLE);
}


/**
  * @brief  DAC初始化函数
  * @param  无
  * @retval 无
  */
void DAC_Mode_Init(void)
{
	uint32_t Idx = 0;  

	DAC_Config();
	DAC_TIM_Config();	
	
	/* 填充正弦波形数据,双通道右对齐*/
  for (Idx = 0; Idx < POINT_NUM; Idx++)
  {
    DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
  }
	
	DAC_DMA_Config();
}

4.将一段数字音频歌曲数据转换为模拟音频波形输出
打开AU,添加一首歌曲
在这里插入图片描述
截取,生成wav文件,设置如下
在这里插入图片描述
用音频输出软件将所得到的wav转换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值