你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F302R8 Nucleo板DAC问题

[复制链接]
layl 提问时间:2017-10-26 20:29 /
请教各位大神,我在用STM32F302R8 Nucleo板的TIM2定时器更新DAC时,LED2总是不亮,反复看了好几遍也不知道哪里出了问题,求大神们看一下,本人是枚菜鸟

static void TriangleWave_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA, &GPIO_InitStructure);
}

/*************************************************************

*************************************************************/
static void TriangleWave_TIM_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//???TIM2???
       
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);//????????
TIM_TimeBaseStructure.TIM_Period = 10000-1;//????100
TIM_TimeBaseStructure.TIM_Prescaler = 720-1;//????
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;//?????
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//???
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//???TIM2
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);//??????????,??????,?????DAC??

TIM_Cmd(TIM2, ENABLE);//?????
}

/*************************************************************

*************************************************************/
static void TriangleWave_DAC_Init(void)
{
DAC_InitTypeDef DAC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);//???DAC??       

DAC_InitStructure.DAC_Buffer_Switch=DAC_BufferSwitch_Disable;                //?????,???
DAC_InitStructure.DAC_Trigger=DAC_Trigger_T2_TRGO;                                //???2????
DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;        //???
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits2_0;//???????????,??????
DAC_Init(DAC1,DAC_Channel_2,&DAC_InitStructure);

DAC_Cmd(DAC1, DAC_Channel_2, ENABLE);

}


/*************************************************************

*************************************************************/
void TriangleWave_Init(void)
{
TriangleWave_GPIO_Init();
TriangleWave_TIM_Init();
TriangleWave_DAC_Init();
}

以下是main()函数内容
int main(void)
{
   TriangleWave_Init();
        while(1)
                {
                DAC_SetChannel2Data(DAC1,DAC_Align_12b_R,4000);
                }
}

我感觉是DAC设置得有问题,但是又找不出哪里的问题


收藏 1 评论2 发布时间:2017-10-26 20:29

举报

2个回答
anywill 回答时间:2017-11-16 10:08:29
试试这个代码在mbed网上编译
D13呼吸灯
#include "mbed.h"
AnalogOut led(D13);//DAC
float ledvalue=1.0;
int main()
{
    while (1)
    {
        while(1)
        {
            led.write(ledvalue);
            wait (0.5);
            ledvalue=ledvalue-0.1;
            if (ledvalue<0.1)
                break;
        }
    }

}

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2017-11-17 10:18:41
这里有个好例子,你可以参考一下:
https://www.stmcu.org.cn/module/forum/thread-601838-1-1.html

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版