历史上的今天
今天是:2025年03月07日(星期五)
2019年03月07日 | STM32之DAC例程
2019-03-07 来源:eefocus
#include "stm32f10x.h"
/* RCC时钟配置 */
void RCC_config()
{
ErrorStatus HSEStartUpStatus;
/* RCC寄存器设置为默认配置 */
RCC_DeInit();
/* 打开外部高速时钟 */
RCC_HSEConfig(RCC_HSE_ON);
/* 等待外部高速时钟稳定 */
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
/* 设置HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 设置PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 设置PCLK1 = HCLK / 2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
// /* 设置FLASH代码延时 */
// FLASH_SetLatency(FLASH_Latency_2);
// /* 使能预取址缓存 */
// FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 设置PLL时钟源为HSE倍频9 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 等待PLL稳定 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 设置PLL为系统时钟源 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待系统时钟源切换到PLL */
while(RCC_GetSYSCLKSource() != 0x08);
}
}
/* GPIO配置 */
void GPIO_config()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA, GPIO_Pin_4);
}
/* DAC配置 */
void DAC_cofig(void)
{
DAC_InitTypeDef DAC_InitType;
/* 时钟初始化 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
/* 不使用触发功能 */
DAC_InitType.DAC_Trigger = DAC_Trigger_None;
/* 不使用波形发生器 */
DAC_InitType.DAC_WaveGeneration = DAC_WaveGeneration_None;
/* 屏蔽、幅值设置 */
DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
/* 禁止输出缓冲区 */
DAC_InitType.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
/* 初始化ADC通道 */
DAC_Init(DAC_Channel_1, &DAC_InitType);
/* ADC通道1使能 */
DAC_Cmd(DAC_Channel_1, ENABLE);
/* DAC值初始化为0 */
DAC_SetChannel1Data(DAC_Align_12b_R, 0);
}
/* 毫秒延时 */
void delay_ms(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}
int main()
{
uint16_t data = 2048;
/* 时钟配置 */
RCC_config();
/* GPIO配置 */
GPIO_config();
/* DAC配置 */
DAC_cofig();
while(1)
{
DAC_SetChannel1Data(DAC_Align_12b_R, data);
delay_ms(1000);
}
}
上一篇:STM32之SysTick原理
下一篇:STM32之DAC原理
史海拾趣
|
第1章 基础知识1.1 汇编语言及特点1.2 数据表示1.3 8086CPU和寄存器组1.4 存储器物理地址的形成 第2章 寻址方式和指令系统2.1 寻址方式2. ...… 查看全部问答> |
|
LINK : fatal error LNK1104: cannot open file 'mfcs42d.lib'?????求助!!! 刚装上EVC4.0+SP4,从PB5导出并安装了自己的SDK,然后在EVC建了一个简单的MFC Application,选择SDK后编译后就出现: LINK : fatal error LNK1104: cannot open file \'mfcs42d.lib\' 我查看了我安装的SDK目录下有这个文件,而且在EVC的Include ...… 查看全部问答> |
|
我们在做一个USB设备的开发,硬件已经成形了。 但是,问题出在: 将该设备插入到XP系统下,系统的资源管理器里边会出现USB的2个未知设备,(我们这一个设备里,有2个Interface) 看每个的属性,PID值也和我们硬件里边写 的一样,然后安装驱动 ...… 查看全部问答> |
|
用IAR for MSP430的JTAG口仿真,出现了问题,求高手指点 我用的是利达尔的MSP430F2274开发板,它上面直接就有JTAG口仿真,然后我就买了一块并口卡插上去,电源灯会亮,但是一直都不能仿真调试,我想是设置的问题,因为并口卡我用它来下载到ARM7上是没问题的,所以在这里求高手指点。 这个就是错误提示。… 查看全部问答> |
|
谁会做protues中有没有PIC16F1783的仿真元件?感谢热心人的帮忙,可回贴上来,也可以发邮rsszd@163.com或qq2230404553,非常期待!再次谢过… 查看全部问答> |
|
本帖最后由 Sur 于 2014-1-16 15:59 编辑 回顾下前几天在美国拉斯维加斯举办的CES 2014-->本次展览,DLP展台上展出的最新汽车抬头显示系统和车载信息娱乐系统,有让你震撼到吗?是的,DLP技术应用于汽车, ...… 查看全部问答> |
|
试了一下STM32的ADC1和ADC2,调试时出现的问题让我不解: (1)只使用STM32的ADC1采集信号,PA.0为其模拟输入通道; 将ADC1配置成独立模式、单通道单次转换、软件触发, 采集到的数据是正确的; (2)只使用ADC2采集信号,与(1)中ADC1的设置完全相 ...… 查看全部问答> |




