STM32CubeMX學(xué)習(xí)筆記(21)——DAC接口使用(輸出模擬音頻波形)

一搞隐、DAC簡介

DAC(Digital-to-Analog Converter),即數(shù)字/模擬轉(zhuǎn)換模塊远搪,故名思議劣纲,它的作用就是把輸入的數(shù)字編碼,轉(zhuǎn)換成對應(yīng)的模擬電壓輸出谁鳍,它的功能與 ADC 相反癞季。在常見的數(shù)字信號系統(tǒng)中,大部分傳感器信號被化成電壓信號倘潜,而 ADC 把電壓模擬信號轉(zhuǎn)換成易于計算機存儲绷柒、處理的數(shù)字編碼,由計算機處理完成后涮因,再由 DAC 輸出電壓模擬信號废睦,該電壓模擬信號常用來驅(qū)動某些執(zhí)行器件,使人類易于感知养泡。如音頻信號的采集及還原就是這樣一個過程嗜湃。

STM32 具有片上 DAC 外設(shè),它的分辨率可配置為 8 位或 12 位的數(shù)字輸入信號瓤荔,具有兩個 DAC 輸出通道净蚤,這兩個通道互不影響,每個通道都可以使用 DMA 功能输硝,都具有出錯檢測能力,可外部觸發(fā)程梦。

二点把、DAC通道選擇

在 STM32 中具有 2 個這樣的 DAC 部件橘荠,每個 DAC 有 1 個對應(yīng)的輸出通道連接到特定的引腳,即:PA4-通道 1郎逃,PA5-通道 2哥童,為避免干擾,使用 DAC 功能時褒翰,DAC 通道引腳需要被配置成模擬輸入功能(AIN)贮懈。

三、新建工程

1. 打開 STM32CubeMX 軟件优训,點擊“新建工程”

2. 選擇 MCU 和封裝

3. 配置時鐘
RCC 設(shè)置朵你,選擇 HSE(外部高速時鐘) 為 Crystal/Ceramic Resonator(晶振/陶瓷諧振器)


選擇 Clock Configuration,配置系統(tǒng)時鐘 SYSCLK 為 72MHz
修改 HCLK 的值為 72 后揣非,輸入回車抡医,軟件會自動修改所有配置

4. 配置調(diào)試模式
非常重要的一步,否則會造成第一次燒錄程序后續(xù)無法識別調(diào)試器
SYS 設(shè)置早敬,選擇 Debug 為 Serial Wire

四忌傻、DAC1

4.1 參數(shù)配置

Analog 中選擇 DAC 設(shè)置,并選擇 OUT1 Configuration 通道1


或者在右邊圖找到 PA4 引腳搞监,選擇 DAC_OUT1

具體配置參數(shù)如下水孩。

  • OUT1/2 Configuration
    對應(yīng)兩個輸出通道。
  • External Trigger
    外部中斷EXTI9 觸發(fā) 就是使用外部中斷來觸發(fā)DAC琐驴。
  • Output Buffer
    使能DAC輸出緩存俘种。

DAC 集成了 2 個輸出緩存,可以用來減少輸出阻抗棍矛,無需外部運放即可直接驅(qū)動外部負(fù)載安疗。每個 DAC 通道輸出緩存可以通過設(shè)置 DAC_CR 寄存器的 BOFFx 位來使能或者關(guān)閉。如果帶載能力還不行够委,后面就接一個電壓跟隨器荐类,選擇運放一定要選擇電流大的型號。
使能輸出緩沖后茁帽,DAC 輸出的最小電壓為 0.2V玉罐,最大電壓為 VREF+-0.2,而未使能輸出緩沖則輸出可達到0V潘拨。

  • Trigger
    選擇DAC的觸發(fā)方式
    Timer 2/4/5/6/7/8 Trigger Out event 定時器觸發(fā)吊输,利用這種方式可以輸出特定的波形。在這里我們選擇定時器2铁追。
    Software trigger 軟件觸發(fā)季蚂,在本模式下,向 DAC_SWTRIGR 寄存器寫入配置即可觸發(fā)信號進行轉(zhuǎn)換。
  • Wave generation mode:Disable(不使用波形發(fā)生器)扭屁。

4.2 配置DMA

點擊 DMA Settings 添加 DAC_CH1 對應(yīng) DMA2 的通道3算谈。DMA模式選擇循環(huán)模式,方向選為內(nèi)存到外設(shè)料滥。

  • Priority
    當(dāng)發(fā)生多個 DMA 通道請求時然眼,就意味著有先后響應(yīng)處理的順序問題,這個就由仲裁器也管理葵腹。仲裁器管理 DMA 通道請求分為兩個階段高每。第一階段屬于軟件階段,可以在 DMA_CCRx 寄存器中設(shè)置践宴,有 4 個等級:非常高鲸匿、高、中和低四個優(yōu)先級浴井。第二階段屬于硬件階段晒骇,如果兩個或以上的 DMA 通道請求設(shè)置的優(yōu)先級一樣,則他們優(yōu)先級取決于通 道編號磺浙,編號越低優(yōu)先權(quán)越高洪囤,比如通道 0 高于通道 1。在大容量產(chǎn)品和互聯(lián)型產(chǎn)品中撕氧,DMA1 控制器擁有高于 DMA2 控制器的優(yōu)先級瘤缩。
  • Mode
    Normal 表示單次傳輸,傳輸一次后終止傳輸伦泥。
    Circular 表示循環(huán)傳輸剥啤,傳輸完成后又重新開始繼續(xù)傳輸,不斷循環(huán)永不停止不脯。
  • Increment Address
    Peripheral 表示外設(shè)地址自增府怯。
    Memory 表示內(nèi)存地址自增。
  • Data Width
    Byte 一個字節(jié)防楷。
    Half Word 半個字牺丙,等于兩字節(jié)。
    Word 一個字复局,等于四字節(jié)冲簿。

五、TIM2通用定時器

5.1 參數(shù)配置

Timers 中選擇 TIM2 設(shè)置亿昏,時鐘源 Clock Source 選擇內(nèi)部時鐘 Internal Clock

Parameter Settings 進行具體參數(shù)配置峦剔。

  • Prescaler(時鐘預(yù)分頻數(shù)):0 則驅(qū)動計數(shù)器的時鐘 CK_CNT = CK_INT(即72MHz)/(0+1) = 72MHz 即不分頻
  • Counter Mode(計數(shù)模式):Up(向上計數(shù)模式)
  • Counter Period(自動重裝載值):20-1
  • auto-reload-preload(自動重裝載):Disable(不使能)
  • TRGO Parameters(觸發(fā)輸出):Update Event(更新事件) 在定時器的定時時間到達的時候輸出一個信號(如:定時器更新產(chǎn)生TRGO信號來觸發(fā)ADC的同步轉(zhuǎn)換)

5.2 生成代碼

輸入項目名和項目路徑


選擇應(yīng)用的 IDE 開發(fā)環(huán)境 MDK-ARM V5

每個外設(shè)生成獨立的 ’.c/.h’ 文件
不勾:所有初始化代碼都生成在 main.c
勾選:初始化代碼生成在對應(yīng)的外設(shè)文件。 如 GPIO 初始化代碼生成在 gpio.c 中角钩。

點擊 GENERATE CODE 生成代碼

六吝沫、庫函數(shù)

/* IO operation functions *****************************************************/
HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel);     //開啟DAC輸出
HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel);   //關(guān)閉DAC輸出
HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment); //需要函數(shù)中不斷開啟   //開啟DAC的DMA輸出
HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel); //關(guān)閉DAC的DMA輸出
HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);  //設(shè)置DAC輸出值
uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel);  //獲取DAC輸出值
/**
  * @brief  Starts the TIM Base generation.
  * @param  htim TIM Base handle
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);

七呻澜、生成模擬音頻波形數(shù)據(jù)表

7.1 安裝Adobe Audition

鏈接:https://pan.baidu.com/s/1iGMV7FPn-87KI9FnFUDx9A 提取碼:4ahu

7.2 生成Wav文件

Adobe Audition 打開一個音頻文件,選擇一段區(qū)域野舶。右鍵易迹,存儲選區(qū)為宰衙。


設(shè)置參數(shù)平道,然后導(dǎo)出

  • 格式:Wave PCM
  • 采樣類型:8000 Hz,單聲道供炼,8位
  • 去除包含標(biāo)記和其他元數(shù)據(jù)一屋,這樣生成的文件更小

7.3 關(guān)于采樣類型選擇

看看采樣頻率和位深需要定時器頻率的關(guān)系如下表格:


根據(jù)上面 五、TIM2通用定時器 的參數(shù)配置袋哼,定時器頻率:

TIM2的定時器頻率:f = Tclk/[(psc+1) * (cnt+1)] = 72MHz/[1*20] = 3.6MHz冀墨。

  • 定時器時鐘Tclk:72MHz
  • 預(yù)分頻器psc:0
  • 自動重裝載值cnt:19

所以我們采樣頻率選擇 8000 Hz,位深選擇 8位


7.4 安裝DataToHex

鏈接:https://pan.baidu.com/s/1VZwq4zs5b3Mutn5p8rL2Uw 提取碼:9d0h

7.5 生成十六進制數(shù)組

如:

/*----The Length of This Array is 1134 Byte.----*/

unsigned char Array[]={

0x52,0x49,0x46,0x46,0x66,0x04,0x00,0x00,0x57,0x41,0x56,0x45,0x66,0x6D,0x74,0x20,

0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x40,0x1F,0x00,0x00,0x40,0x1F,0x00,0x00,

0x01,0x00,0x08,0x00,0x64,0x61,0x74,0x61,0x41,0x04,0x00,0x00,0x58,0x6D,0x7F,0x8F,

0xA5,0xB0,0xB9,0xBF,0xC0,0xB8,0xAF,0xA2,0x93,0x83,0x75,0x6B,0x63,0x61,0x63,0x6A,

0x72,0x7F,0x87,0x90,0x9A,0x9C,0x99,0x9A,0x97,0x8D,0x88,0x7E,0x73,0x69,0x60,0x58,

0x4B,0x47,0x43,0x46,0x4F,0x5B,0x6B,0x7D,0x8E,0x9F,0xAE,0xB5,0xBD,0xBB,0xB4,0xB0,

0x9E,0x92,0x85,0x74,0x6F,0x68,0x64,0x68,0x6E,0x74,0x80,0x8A,0x90,0x98,0x9D,0x9A,

0x97,0x91,0x8A,0x85,0x7A,0x75,0x70,0x66,0x62,0x5C,0x54,0x4F,0x4A,0x49,0x55,0x5A,

0x6B,0x80,0x89,0x9E,0xAD,0xB4,0xBE,0xBB,0xB4,0xAC,0x9F,0x8D,0x83,0x73,0x6B,0x68,

0x64,0x69,0x70,0x76,0x83,0x8D,0x93,0x9A,0x9D,0x99,0x97,0x8F,0x86,0x83,0x7A,0x71,

0x6F,0x65,0x61,0x5E,0x56,0x54,0x4E,0x48,0x53,0x5D,0x63,0x7D,0x8A,0x95,0xAD,0xB0,

0xB8,0xBE,0xB3,0xAB,0xA4,0x8E,0x83,0x77,0x6A,0x68,0x65,0x68,0x70,0x78,0x83,0x8F,

0x96,0x9B,0x9E,0x9B,0x96,0x8F,0x87,0x7E,0x7B,0x74,0x6D,0x71,0x67,0x67,0x64,0x5D,

0x57,0x53,0x49,0x52,0x5B,0x61,0x7C,0x87,0x95,0xA9,0xB3,0xB7,0xBD,0xB1,0xA9,0xA2,

0x8D,0x80,0x78,0x69,0x66,0x68,0x6A,0x74,0x7D,0x87,0x92,0x98,0x9A,0x9D,0x98,0x93,

0x8B,0x83,0x7B,0x79,0x74,0x6F,0x72,0x6E,0x6B,0x6A,0x62,0x5A,0x55,0x4B,0x4F,0x59,

0x5C,0x73,0x84,0x8E,0xA9,0xAE,0xB5,0xBB,0xB4,0xA8,0xA4,0x8D,0x7F,0x78,0x67,0x69,

0x6A,0x6F,0x78,0x85,0x8B,0x95,0x9D,0x9A,0x9B,0x94,0x88,0x83,0x7D,0x78,0x78,0x76,

0x74,0x78,0x73,0x74,0x6F,0x62,0x5B,0x4F,0x47,0x4D,0x57,0x5F,0x7E,0x87,0x9A,0xAA,

0xAE,0xAE,0xAE,0xA2,0x95,0x90,0x7C,0x79,0x74,0x71,0x79,0x81,0x87,0x94,0x97,0x9A,

0x9C,0x98,0x90,0x8B,0x81,0x79,0x78,0x76,0x79,0x79,0x7D,0x7B,0x7B,0x78,0x71,0x66,

0x58,0x4C,0x40,0x41,0x4E,0x58,0x74,0x89,0x98,0xAB,0xB4,0xB3,0xB1,0xA9,0x95,0x8F,

0x7F,0x77,0x74,0x74,0x7A,0x83,0x8B,0x96,0x9A,0x9D,0x9D,0x97,0x8E,0x83,0x7E,0x76,

0x74,0x76,0x76,0x79,0x7E,0x7C,0x7C,0x7B,0x73,0x68,0x59,0x4A,0x41,0x3C,0x4B,0x57,

0x6E,0x89,0x97,0xA9,0xB7,0xB6,0xB0,0xAE,0x97,0x8E,0x81,0x76,0x73,0x77,0x79,0x84,

0x8F,0x95,0x9E,0x9E,0x9C,0x97,0x90,0x83,0x80,0x76,0x73,0x75,0x77,0x79,0x7F,0x80,

0x7E,0x7D,0x76,0x69,0x5A,0x4D,0x40,0x3B,0x47,0x52,0x66,0x82,0x91,0xA4,0xB2,0xB4,

0xB3,0xAE,0x9C,0x91,0x84,0x78,0x76,0x75,0x7B,0x84,0x8C,0x95,0x9B,0x9E,0x9C,0x99,

0x90,0x86,0x83,0x77,0x74,0x76,0x74,0x78,0x7C,0x7C,0x7D,0x7A,0x73,0x69,0x5D,0x4E,

0x47,0x41,0x49,0x56,0x65,0x7D,0x8E,0xA0,0xAB,0xB2,0xAE,0xAC,0x9E,0x93,0x88,0x7F,

0x7B,0x7A,0x7D,0x84,0x8B,0x92,0x9A,0x9A,0x9B,0x99,0x90,0x89,0x87,0x7A,0x78,0x78,

0x73,0x79,0x79,0x78,0x78,0x74,0x6A,0x62,0x57,0x4E,0x47,0x47,0x50,0x5C,0x6F,0x82,

0x91,0xA0,0xA9,0xAB,0xAE,0xA5,0x9F,0x96,0x8A,0x86,0x82,0x7F,0x83,0x87,0x8A,0x93,

0x96,0x97,0x96,0x94,0x8C,0x88,0x83,0x7C,0x78,0x76,0x72,0x73,0x73,0x6E,0x6E,0x66,

0x5E,0x58,0x52,0x4C,0x54,0x57,0x64,0x75,0x7F,0x8F,0x9C,0xA0,0xA6,0xA8,0xA1,0xA1,

0x98,0x90,0x8C,0x87,0x84,0x89,0x87,0x8B,0x90,0x91,0x92,0x92,0x8F,0x8B,0x89,0x82,

0x7F,0x7B,0x76,0x73,0x72,0x6C,0x69,0x63,0x5C,0x57,0x53,0x4F,0x56,0x59,0x62,0x71,

0x7B,0x88,0x96,0x9A,0xA1,0xA6,0xA3,0xA3,0x9F,0x98,0x95,0x90,0x8B,0x8D,0x8A,0x8C,

0x8E,0x8D,0x8E,0x8E,0x8B,0x8A,0x87,0x81,0x7F,0x7B,0x75,0x72,0x6D,0x68,0x62,0x5D,

0x58,0x53,0x51,0x52,0x58,0x60,0x6A,0x74,0x80,0x8B,0x95,0x9C,0xA1,0xA3,0xA4,0xA1,

0x9F,0x9C,0x97,0x95,0x91,0x90,0x8E,0x8F,0x8E,0x8E,0x8C,0x8C,0x88,0x87,0x83,0x7E,

0x7B,0x76,0x71,0x6B,0x67,0x5F,0x5B,0x55,0x53,0x51,0x54,0x57,0x5F,0x69,0x72,0x7F,

0x89,0x91,0x9B,0xA1,0xA3,0xA7,0xA5,0xA3,0xA1,0x9D,0x99,0x96,0x92,0x90,0x8F,0x8D,

0x8C,0x8B,0x89,0x86,0x86,0x7F,0x7C,0x77,0x71,0x6B,0x66,0x5E,0x5A,0x56,0x52,0x52,

0x54,0x57,0x5F,0x67,0x6F,0x7B,0x83,0x8C,0x96,0x9C,0xA0,0xA6,0xA6,0xA6,0xA6,0xA1,

0x9E,0x9C,0x96,0x94,0x92,0x8F,0x8C,0x8B,0x86,0x85,0x81,0x7D,0x7B,0x76,0x70,0x6D,

0x66,0x60,0x5D,0x58,0x56,0x55,0x56,0x58,0x5F,0x64,0x6D,0x77,0x7F,0x88,0x91,0x97,

0x9E,0xA2,0xA5,0xA8,0xA7,0xA5,0xA3,0x9F,0x9B,0x98,0x93,0x91,0x8E,0x8B,0x88,0x83,

0x80,0x7B,0x78,0x72,0x6E,0x68,0x64,0x5E,0x5A,0x56,0x53,0x53,0x55,0x58,0x5E,0x66,

0x70,0x78,0x83,0x8C,0x94,0x9B,0xA0,0xA5,0xA8,0xA9,0xA9,0xA6,0xA5,0xA2,0x9E,0x9B,

0x97,0x92,0x8F,0x8B,0x85,0x80,0x7B,0x76,0x70,0x6B,0x65,0x60,0x5B,0x57,0x52,0x52,

0x51,0x53,0x58,0x5D,0x66,0x6E,0x79,0x82,0x8C,0x95,0x9C,0xA2,0xA7,0xA9,0xAC,0xAC,

0xAA,0xA8,0xA6,0xA1,0x9D,0x99,0x93,0x8F,0x89,0x83,0x7F,0x78,0x72,0x6C,0x65,0x5F,

0x5A,0x54,0x51,0x4E,0x4E,0x50,0x54,0x5A,0x61,0x6A,0x74,0x7D,0x88,0x92,0x9A,0xA2,

0xA8,0xAC,0xAF,0xAF,0xAF,0xAD,0xAA,0xA5,0xA0,0x9C,0x96,0x91,0x8A,0x83,0x7D,0x78,

0x70,0x6A,0x62,0x5C,0x57,0x52,0x4E,0x4C,0x4D,0x4F,0x53,0x5A,0x61,0x6C,0x76,0x7F,

0x8B,0x95,0x9D,0xA4,0xAA,0xAD,0xB0,0xB0,0xAF,0xAD,0xAA,0xA6,0xA0,0x9B,0x95,0x8E,

0x87,0x81,0x79,0x72,0x6A,0x63,0x5D,0x57,0x52,0x4F,0x4D,0x4D,0x4F,0x52,0x58,0x5F,

0x68,0x72,0x7D,0x87,0x91,0x99,0xA1,0xA8,0xAC,0xB0,0xB0,0xB0,0xAE,0xAB,0xA8,0xA3,

0x9D,0x97,0x8F,0x89,0x81,0x7A,0x72,0x6A,0x64,0x5D,0x58,0x53,0x4F,0x4E,0x4D,0x4F,

0x53,0x59,0x5F,0x68,0x72,0x7C,0x86,0x8F,0x99,0x9F,0xA6,0xAB,0xAE,0xAF,0xB0,0xAE,

0xAB,0xA8,0xA2,0x9D,0x96,0x8F,0x88,0x81,0x78,0x71,0x69,0x63,0x5C,0x57,0x53,0x51,

0x4F,0x50,0x53,0x57,0x5C,0x63,0x6C,0x75,0x7E,0x88,0x90,0x98,0xA0,0xA4,0xAA,0xAD,

0xAE,0xAE,0xAC,0xA9,0xA5,0xA1,0x9A,0x94,0x8D,0x86,0x7D,0x76,0x6F,0x68,0x61,0x5C,

0x58,0x54,0x53,0x53,0x54,0x57,0x5C,0x62,0x69,0x71,0x79,0x82,0x8A,0x92,0x98,0x9E,

0xA3,0xA7,0xA9,0xAA,0xAA,0xA7,0xA4,0xA1,0x9B,0x95,0x8E,0x88,0x81,0x7A,0x74,0x6D,

0x68,0x63,0x5F,0x5D,0x5A,0x5B,0x5C,0x5D,0x61,0x64,0x69,0x70,0x77,0x7D,0x84,0x8A,

0x8F,0x97,0x9A,0x9D,0x9F,0xA1,0xA2,0xA0,0x9F,0x9C,0x98,0x93,0x8F,0x89,0x84,0x7E,

0x79,0x75,0x70,0x6D,0x6A,0x67,0x66,0x66,0x66,0x67,0x69,0x6D,0x70,0x73,0x77,0x7C,

0x80,0x84,0x88,0x8B,0x8E,0x91,0x93,0x95,0x94,0x95,0x93,0x92,0x90,0x8E,0x8B,0x87,

0x84,0x81,0x7D,0x7A,0x78,0x76,0x73,0x73,0x71,0x70,0x70,0x71,0x73,0x00,

};

八涛贯、修改main函數(shù)

添加模擬音頻波形數(shù)據(jù)表 Array[]
添加 HAL_TIM_Base_Start() 函數(shù)诽嘉,啟動定時器。
添加 HAL_DAC_Start_DMA()函數(shù)弟翘,啟動 DAC 的 DMA 輸出虫腋。

unsigned char Array[]={

0xFF,0xF3,0x28,0xC4,0x00,0x0C,0xC8,0x4E,0xA8,0xFF,0x58,0x10,0x00,0x80,0x2A,0x42,

0x52,0x34,0x03,0xF9,0xF5,0xE1,0xB6,0x06,0x17,0x39,0xFD,0xAB,0xB2,0x04,0xD6,0xAA,

0x52,0x0A,0x9C,0x32,0xF4,0x37,0xF6,0x7C,0x22,0xEC,0x59,0xD4,0xF2,0x1C,0xBB,0x30,

0xB7,0xA4,0xD2,0x7F,0xFD,0xBF,0xEB,0xFB,0x3E,0x51,0x63,0xFF,0xFF,0xD5,0x94,0x0C,

0x2A,0xC9,0xBA,0xE6,0xA2,0x98,0xAA,0x91,0xFF,0xF3,0x28,0xC4,0x07,0x0C,0x98,0x6A,

0xBC,0x01,0x98,0x68,0x00,0xA8,0x91,0x70,0x14,0x62,0x23,0xCB,0x87,0x02,0x8A,0x66,

0xC3,0x4F,0xA4,0x01,0x11,0x7A,0x29,0xE5,0x58,0x48,0xCD,0xFC,0xB8,0xAB,0x7D,0x2E,

0x6A,0x7E,0x97,0x89,0xFF,0x86,0xCA,0x06,0x19,0xD7,0xD4,0x24,0xE1,0x80,0xE3,0x3D,

0x55,0xFF,0xFE,0xF1,0x25,0xC0,0x53,0x36,0xD4,0xDF,0x51,0x04,0x62,0x63,0x2A,0x56,

0xFF,0xF3,0x28,0xC4,0x0F,0x0F,0x21,0xC2,0xB8,0x01,0xD9,0x10,0x01,0x9B,0x0E,0xD4,

0x8D,0x95,0x47,0x80,0x1D,0xE9,0x76,0x59,0x47,0x2B,0xD2,0x9B,0x00,0x0A,0xDC,0x8B,

0x7E,0x9F,0x69,0x7F,0xFF,0xFF,0xFD,0x73,0x3A,0xF6,0x52,0xAA,0x50,0xC5,0x67,0x63,

0x14,0x39,0x84,0x25,0xA1,0x89,0x82,0xC0,0x91,0x39,0xB5,0xAA,0x9B,0x15,0xB6,0xDB,

0x62,0x96,0x81,0x5F,0x0E,0xF8,0x59,0xB2,0xFF,0xF3,0x28,0xC4,0x0D,0x10,0x78,0xAE,

0xF2,0x5E,0x83,0xCE,0x4E,0x2E,0x40,0xFE,0x0B,0x36,0xE4,0x0B,0x25,0x25,0x20,0x65,

0x74,0xFF,0x98,0x0A,0x02,0x29,0xC0,0x81,0x64,0x4C,0x47,0x1E,0x7E,0x79,0x17,0x44,

0x3B,0x76,0xFD,0x98,0xC7,0xA8,0x65,0x62,0x8F,0x72,0x63,0x56,0x75,0x43,0x6A,0x19,

0x82,0x4A,0x63,0xF7,0xFA,0x86,0xB5,0x5F,0xFF,0xD0,0xFD,0x7E,0xA6,0xC9,0x2B,0x22,

0xFF,0xF3,0x28,0xC4,0x06,0x0E,0x59,0xE2,0xAC,0x00,0xCC,0x84,0x99,0x6F,0x55,0x74,

0xE1,0x21,0x25,0xDF,0x81,0x7C,0xE1,0x7C,0x35,0x78,0x05,0xB1,0x3C,0x95,0x62,0xE7,

0x35,0xE7,0x46,0x6C,0xD7,0xCD,0x3D,0x47,0xBD,0x4D,0xFF,0xFF,0xFF,0xFF,0xA7,0xCE,

0xDE,0x76,0xAA,0x90,0x18,0xCC,0xB0,0xE1,0x9E,0xA5,0x06,0x65,0xEA,0x2D,0x77,0x1F,

0x75,0x0B,0xE5,0xA7,0x63,0x70,0x6D,0x10,0xFF,0xF3,0x28,0xC4,0x07,0x0D,0x08,0x92,

0xAC,0xCA,0x9E,0x14,0x4C,0x5E,0xE6,0x09,0xF6,0x50,0x32,0xC8,0x72,0xBF,0x79,0x5C,

0x2C,0x3A,0x49,0x6F,0xE8,0xA8,0x04,0x3A,0x15,0x02,0x81,0x6E,0x85,0xB2,0x19,0x0F,

0xFF,0xFB,0xB7,0xCB,0x62,0x66,0x55,0xAB,0x13,0x15,0x2C,0x5B,0xFF,0xFF,0xFF,0xFF,

0x22,0xE4,0xAA,0x7F,0xFF,0x7A,0xAF,0x00,0x24,0xB1,0xDD,0x22,0xB3,0xF2,0x7F,0x22,

0xFF,0xF3,0x28,0xC4,0x0D,0x0E,0xA8,0x9A,0xA0,0x28,0xD6,0x18,0x4C,0x6E,0xB8,0xD5,

0x1F,0x4B,0x39,0xD6,0x55,0x64,0x90,0x88,0x4E,0x77,0x04,0xA3,0x12,0x7B,0xF3,0xA8,

0x63,0x62,0x7B,0xF3,0x6F,0x7B,0xA2,0x22,0x78,0x0E,0x06,0x97,0x7F,0xFA,0x9B,0x0A,

0xA5,0x4C,0xF5,0x9D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xB5,0x10,0x00,0xD2,0x76,0x5A,

0x00,0xE7,0x47,0xC0,0x7A,0x60,0x3B,0x82,0xFF,0xF3,0x28,0xC4,0x0D,0x0C,0x70,0xD2,

0xBA,0x58,0x93,0x0C,0x71,0xC7,0xC9,0x84,0x88,0xBC,0x7A,0x17,0x88,0x82,0xC9,0x5C,

0x56,0x03,0x41,0xE9,0x3D,0xF9,0xCD,0x81,0x8D,0xBD,0x9A,0x3A,0x01,0x88,0x43,0xE6,

0xFF,0xFB,0xBD,0x5E,0x5B,0x29,0x42,0x46,0x1F,0x09,0x08,0x64,0xD5,0x96,0xEC,0x30,

0x18,0x01,0xF6,0x29,0x07,0xA4,0x55,0x12,0x88,0x83,0x48,0x16,0xD4,0x40,0x64,0xBF,

0xFF,0xF3,0x28,0xC4,0x16,0x0D,0x10,0xEA,0xE2,0x5E,0x82,0xC6,0x72,0xF7,0x5B,0x4D,

0xAB,0xE1,0xCE,0x3C,0xDB,0x61,0x31,0x54,0xBF,0xF8,0xB9,0x95,0x60,0xCC,0x14,0xD0,

0xC4,0x84,0xCE,0xBF,0xFF,0xA9,0x3F,0xFF,0xFF,0xFA,0xE4,0x95,0x28,0x98,0x9F,0x00,

0x7E,0x06,0x3F,0xF5,0xB2,0x76,0x93,0x24,0x40,0x40,0xDF,0xCC,0x2B,0xA2,0x07,0x3F,

0x39,0x55,0xB0,0xED,0x48,0xA9,0x72,0xC7,0xFF,0xF3,0x28,0xC4,0x1C,0x0C,0xE0,0x8E,

0x84,0x7E,0xD6,0x04,0x4C,0x59,0x66,0x02,0x02,0x2F,0x30,0x30,0x16,0xFA,0xA5,0x5D,

0xA7,0xFF,0xD9,0xFF,0xFF,0xFF,0xFF,0x2B,0x11,0x7F,0xFF,0x1E,0x85,0xCC,0x0C,0x09,

0x87,0x5D,0x4F,0x26,0x70,0x70,0x4C,0xE0,0x32,0x97,0x31,0xEA,0x0A,0x6A,0x31,0x79,

0x88,0xE1,0x92,0x38,0x39,0x82,0x43,0x4C,0xC5,0xBE,0xD5,0xA0,0xFB,0x76,0xAC,0xE4,

0xFF,0xF3,0x28,0xC4,0x23,0x0C,0x88,0x59,0xF4,0x14,0xC6,0x70,0x24,0x2C,0x68,0x28,

0x6A,0x90,0x91,0x17,0x7B,0xFF,0xF5,0x7F,0xFF,0xFF,0xFF,0xF5,0x2A,0x4C,0x41,0x4D,

0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xF3,0x28,0xC4,0x2B,0x00,0x00,0x03,

0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,

0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xFF,0xF3,0x28,0xC4,0x66,0x00,0x00,0x03,0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xF3,0x28,0xC4,0xA1,0x00,0x00,0x03,

0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,

0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,

0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,

0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,

0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,

0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,

0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,

0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0x4C,0x41,0x4D,0x45,0x33,0x2E,0x39,0x39,0x2E,0x35,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,

0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,

0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xFF,0xF3,0x28,0xC4,0xC4,0x00,0x00,0x03,0x48,0x00,0x00,0x00,0x00,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,

};

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_DAC_Init();
  MX_TIM2_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start(&htim2);
  HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t *)Array, 1134, DAC_ALIGN_12B_R);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

九、實驗現(xiàn)象

好像有點不太像稀余。悦冀。。



十睛琳、注意事項

用戶代碼要加在 USER CODE BEGIN NUSER CODE END N 之間盒蟆,否則下次使用 STM32CubeMX 重新生成代碼后,會被刪除师骗。


? 由 Leung 寫于 2021 年 3 月 19 日

? 參考:STM32CubeMX系列教程8:數(shù)模轉(zhuǎn)換(DAC)
    使用STM32F103的DAC功能實現(xiàn)音頻輸出
    STM32CubeIDE Audio播放音頻历等,PWM + TIM

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辟癌,隨后出現(xiàn)的幾起案子寒屯,更是在濱河造成了極大的恐慌,老刑警劉巖愿待,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浩螺,死亡現(xiàn)場離奇詭異,居然都是意外死亡仍侥,警方通過查閱死者的電腦和手機要出,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來农渊,“玉大人患蹂,你說我怎么就攤上這事或颊。” “怎么了传于?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵囱挑,是天一觀的道長。 經(jīng)常有香客問我沼溜,道長平挑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任系草,我火速辦了婚禮通熄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘找都。我一直安慰自己唇辨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布能耻。 她就那樣靜靜地躺著赏枚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晓猛。 梳的紋絲不亂的頭發(fā)上饿幅,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音鞍帝,去河邊找鬼诫睬。 笑死,一個胖子當(dāng)著我的面吹牛帕涌,可吹牛的內(nèi)容都是我干的摄凡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蚓曼,長吁一口氣:“原來是場噩夢啊……” “哼亲澡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纫版,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤床绪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后其弊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癞己,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年梭伐,在試婚紗的時候發(fā)現(xiàn)自己被綠了痹雅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡糊识,死狀恐怖绩社,靈堂內(nèi)的尸體忽然破棺而出摔蓝,到底是詐尸還是另有隱情,我是刑警寧澤愉耙,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布贮尉,位于F島的核電站,受9級特大地震影響朴沿,放射性物質(zhì)發(fā)生泄漏猜谚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一悯仙、第九天 我趴在偏房一處隱蔽的房頂上張望龄毡。 院中可真熱鬧,春花似錦锡垄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疾渴,卻和暖如春千贯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搞坝。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工搔谴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桩撮。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓敦第,卻偏偏與公主長得像,于是被迫代替她去往敵國和親店量。 傳聞我的和親對象是個殘疾皇子芜果,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容