STM32外设结构体定义和时钟初始化语句顺序导致编译

1.编写外设初始化函数时候需要定义外设的结构体,以及初始化外设时钟等

但是今天偶然间把代码语句写反了,然后编译不通过,提示错误信息为:dac.c(41): error:  #268: declaration may not appear after executable statement in block
        DAC_InitTypeDef DAC_InitStructure;这个错误提示之前一篇博文也出现过,但是原因好像不是这个,还是贴出来作为经验吧。

void DAC_Mode_Config(void)
{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
DAC_InitTypeDef DAC_InitStructure;
/*设置DAC的触发源为T2触发*/
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
/*使能输出缓冲*/
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
/*不使用波形发生器*/
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
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);
}

以上开头两句为错误的代码顺序

下面为更正后的顺序

void DAC_Mode_Config(void)
{
DAC_InitTypeDef DAC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);

/*设置DAC的触发源为T2触发*/
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
/*使能输出缓冲*/
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
/*不使用波形发生器*/
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
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);
}

将结构体的定义放在外设时钟初始化前就编译通过了,细小经验总结,大家共勉!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值