历史上的今天
今天是:2025年06月26日(星期四)
2018年06月26日 | STM32外设结构体定义和时钟初始化语句顺序导致编译
2018-06-26 来源:eefocus
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);
}
将结构体的定义放在外设时钟初始化前就编译通过了,细小经验总结,大家共勉!
上一篇:设置外设时钟使能时钟
史海拾趣
|
我用AD7874做交流功率测量,想让功率稳定到小数后面的第3位,但是AD7874是12位的AD,跳动一个LSB就0.00488V了,所以小数后面第3位不跳动,但不知到怎样解决,请各位高手献策,在下先谢谢了!… 查看全部问答> |
|
涉及到电源的问题,请在这里提出。 quanzx与rockyltp在这里期待你的讨论。 quanzx:常在坛子里晃荡的网友可能发现,quanzx是像是一位非常热心的大哥,乐于 帮助大家,特别是 ...… 查看全部问答> |
|
我开始感觉应该是一样的,只是把default.hv的名字改成system.hv。 后来发现大小都不一样。 谁研究过类似的问题啊。。… 查看全部问答> |
|
ST-linkIII容易坏SN74LVC2T45DCUT好像该IC没什么必要? 我又坏了一个STLinkIII,经分析,又坏了SN74LVC2T45DCUT,(主芯片倒是很扎实,STM32好东东)。但经过分析(电路见附图),74lvc2t45 5脚接地的话传输方向是 B To A ,即目标板到STM32 。但这有必要吗?STM32 输入口只要串上限流电 ...… 查看全部问答> |
|
c语言-转移语句(continue/break/goto ) goto: goto 语句的作用是跳转到一条你指定的语句,然后从那条语句开始往下执行。goto 语句的用法很简单,首先在你想要跳往的语句前面加个标签和冒号: to: printf(\"go to here\\n\"); 注意,标签的命名 ...… 查看全部问答> |
|
1. 数字IO 1.1. Io分布 Figure 3 io分布图 从图上可以看出,msp430f149具有6组io,每个io均有两种功能。另外P1,P2两组io可以设置为外部中断与其对应了两个中断向量的入口。 1.2. I ...… 查看全部问答> |




