久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
STM32F4__定時器溢出觸發(fā)DAC轉(zhuǎn)換DMA傳輸
[打印本頁]
作者:
jialinx
時間:
2015-9-14 18:33
標(biāo)題:
STM32F4__定時器溢出觸發(fā)DAC轉(zhuǎn)換DMA傳輸
/*
全部工程奉上 注釋完美
*/
/* 添加 DAC 的頭文件 */
#include "dac.h"
/* 定義DAC數(shù)據(jù)全局變量 */
uint16_t DAC_Buff[2]={0xfff<<4,0<<4};
/*
串口初始化配置 無返回值 無參數(shù)
初始化USART1 TX---GPIOA9 RX---GPIOA10
波特率:115200
奇偶校驗:無
停止位:1
硬件流失能
8位數(shù)據(jù)位
使能發(fā)送
*/
void USART_Configuration(void)
{
/* 定義USART初始化結(jié)構(gòu)體 */
USART_InitTypeDef USART_InitStructure;
/* 失能GPIOA 時鐘 */
RCC->AHB1ENR|=RCC_AHB1Periph_GPIOA;
/* 失能USART1的時鐘 */
RCC->APB2ENR|=RCC_APB2Periph_USART1;
/* 設(shè)置 GPIOA9 GPIOA10 為復(fù)用模式 */
GPIOA->MODER|=GPIO_Mode_AF<<2*9|GPIO_Mode_AF<<2*10;
/* 復(fù)用 GPIOA9 到USART1 */
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
/* 復(fù)用 GPIOA10 到 USART1 */
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
USART_InitStructure.USART_BaudRate=115200; /* 配置波特率為115200 */
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; /* 硬件流失能 */
USART_InitStructure.USART_Mode=USART_Mode_Tx; /* USART1模式為發(fā)送模式 */
USART_InitStructure.USART_Parity=USART_Parity_No; /* 奇偶校驗失能 */
USART_InitStructure.USART_StopBits=USART_StopBits_1; /* 停止位為1位 */
USART_InitStructure.USART_WordLength=USART_WordLength_8b; /* 數(shù)據(jù)長度為8位 */
/* 根據(jù)USART_InitStructure 結(jié)構(gòu)體初始化 USART1 */
USART_Init(USART1,&USART_InitStructure);
/* 開啟USART1 */
USART_Cmd(USART1,ENABLE);
}
/*
重映射USART1到printf
使printf能打印數(shù)據(jù)到串口
無參數(shù) 返回打印的字符串
*/
int fputc(int ch, FILE *f )
{
/* 給USART1->DR 賦值就可以將數(shù)據(jù)發(fā)送出去 */
USART1->DR=ch;
/* 等待數(shù)據(jù)發(fā)送完畢 */
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
/* 返回發(fā)送成功的數(shù)據(jù) */
return ch;
}
/*
TIM2基本功能初始化函數(shù)
參數(shù):無
返回值:無
*/
void TIM_Configuration(void)
{
/* 定義設(shè)置TIM2的結(jié)構(gòu)體 */
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* 使能 TIM2 的時鐘 */
RCC->APB1ENR|=RCC_APB1Periph_TIM2;
TIM_TimeBaseStructure.TIM_ClockDivision=0; /* 時鐘不分割 */
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 計數(shù)器為向上計數(shù)模式 */
TIM_TimeBaseStructure.TIM_Period=9999; /* 經(jīng)過9999+1個脈沖溢出一次 */
TIM_TimeBaseStructure.TIM_Prescaler=8399; /* 時鐘分頻值為8399+1=8400 */
TIM_TimeBaseStructure.TIM_RepetitionCounter=0; /* 重復(fù)計數(shù)器設(shè)置為0 */
/* 使用配置好的結(jié)構(gòu)體初始化TIM2 */
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
/* 啟動計數(shù)器 */
TIM_Cmd(TIM2,ENABLE);
/* 配置TIM2觸發(fā)源 */
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);
/* 開啟TIM2 溢出中斷 */
// TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
}
/*
DAC初始化函數(shù)
參數(shù):無
返回值:無
DAC 通道1 對應(yīng)GPIOA4
*/
void DAC_Configuration(void)
{
/* 定義 DAC 初始化的結(jié)構(gòu)體 */
DAC_InitTypeDef DAC_InitStructure;
/* 開啟DAC 時鐘 */
RCC->APB1ENR|=RCC_APB1Periph_DAC;
/* 開啟 GPIOA 時鐘 */
RCC->AHB1ENR|=RCC_AHB1Periph_GPIOA;
/* GPIOA4 設(shè)置為模擬輸入 */
GPIOA->MODER|=GPIO_Mode_AIN<<2*4;
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0; /* 屏蔽幅值 設(shè)置 */
DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Enable; /* 啟用輸出緩沖 */
DAC_InitStructure.DAC_Trigger=DAC_Trigger_T2_TRGO; /* 使用TIM2的溢出觸發(fā)DAC */
DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None; /* 不使用波形發(fā)生器 */
/* 配置DAC的通道1 */
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
/*啟動DAC的通道1 */
DAC_Cmd(DAC_Channel_1,ENABLE);
/* 設(shè)置DAC通道1 數(shù)據(jù)12位右對齊 輸出0對用的模擬電壓*/
DAC_SetChannel1Data(DAC_Align_12b_R,0);
}
/*
DMA配置為 為DAC傳送數(shù)據(jù)
參數(shù);無
返回值:無
*/
void DMA_Configuration(void)
{
/* 定義設(shè)置DMA的結(jié)構(gòu)體 */
DMA_InitTypeDef DMA_InitStructure;
/* 開啟DMA1的時鐘 */
RCC->AHB1ENR|=RCC_AHB1Periph_DMA1;
DMA_InitStructure.DMA_Channel = DMA_Channel_7; /* 通道選擇DAC1 */
DMA_InitStructure.DMA_PeripheralBaseAddr =(uint32_t)&(DAC->DHR12R1); /* DMA外設(shè)地址 DAC通道1數(shù)據(jù)12位右對齊寄存器 [15:4] */
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DAC_Buff; /* DMA 存儲器0地址 */
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral; /* 存儲器到外設(shè)模式 */
DMA_InitStructure.DMA_BufferSize = 2; /* 數(shù)據(jù)傳輸量 */
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; /*外設(shè)非增量模式 */
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable ;//DMA_MemoryInc_Enable; /* 存儲器增量模式 */
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; /* 外設(shè)數(shù)據(jù)長度:16位 */
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; /* 存儲器數(shù)據(jù)長度:16位 */
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; /* 使用循環(huán)模式 */
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; /* 中等優(yōu)先級 */
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; /* 不使用FIFO */
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; /* 不使用FIFO */
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; /* 存儲器突發(fā)單次傳輸 */
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; /* 外設(shè)突發(fā)單次傳輸 */
/* 初始化DMA Stream DMA1 的第5個流的通道7 */
DMA_Init(DMA1_Stream5,&DMA_InitStructure);
/* 啟動DAM1的通道5 */
DMA_Cmd(DMA1_Stream5,ENABLE);
/* 清除DMA傳輸完成標(biāo)記 */
// DMA_ClearITPendingBit(DMA2_Stream5,DMA_IT_TCIF7);
/* 開啟DMA傳輸完成中斷 */
// DMA_ITConfig(DMA2_Stream7,DMA_IT_TC,ENABLE);
/* 使能DAC的DMA請求 */
DAC_DMACmd(DAC_Channel_1,ENABLE);
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91精品国产高清久久久久久久久
|
国产精品福利视频
|
久久国产精品视频
|
欧美日韩国产中文
|
色偷偷888欧美精品久久久
|
中文字幕av一区二区三区
|
亚洲精品国产成人
|
日韩精品一区二区三区
|
免费在线观看成年人视频
|
欧美日韩久久
|
国产一区二区三区
|
正在播放国产精品
|
久久成人18免费网站
|
懂色中文一区二区三区在线视频
|
国产999精品久久久影片官网
|
中文字幕在线不卡
|
欧美日韩一区二区三区视频
|
中文字幕在线观看精品
|
欧美 日本 国产
|
www久久av
|
中文字幕在线视频网站
|
国产精品欧美一区二区三区
|
亚洲精品欧美精品
|
日韩视频一区
|
久久99这里只有精品
|
国产精品视频网
|
国产精品久久久久久久久久久久冷
|
国产黄色小视频在线观看
|
中文字幕一区二区三区日韩精品
|
最新高清无码专区
|
亚洲国产aⅴ成人精品无吗 国产精品永久在线观看
|
91福利网
|
国产欧美日韩在线播放
|
国产精品日日夜夜
|
久久综合一区二区三区
|
蜜桃精品噜噜噜成人av
|
国产精品免费一区二区三区
|
美女黄网站
|
欧美a区
|
蜜桃av鲁一鲁一鲁一鲁
|
a免费视频
|