历史上的今天
返回首页

历史上的今天

今天是: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);
}

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


推荐阅读

史海拾趣

Aborn Electronics Inc公司的发展小趣事

随着电子行业的快速发展,Aborn Electronics意识到只有不断创新才能在竞争中保持领先。公司加大了对研发的投入,引进了一批高素质的研发人才,并在多个技术领域取得了重要突破。其中,一项关于高效能电源管理技术的创新成果,不仅提高了产品的能效比,还为公司带来了可观的经济效益。这一技术的成功应用,进一步提升了Aborn Electronics在行业内的影响力。

Gem Asia Enterprise Co Ltd公司的发展小趣事

面对电子行业供应链复杂多变的挑战,Gem Asia积极实施供应链优化和数字化转型战略。公司引入先进的ERP系统和物联网技术,实现了从原材料采购、生产制造到物流配送的全链条数字化管理。这一举措不仅提高了生产效率和产品质量,还降低了运营成本,增强了企业的市场竞争力。同时,Gem Asia还加强了与上下游企业的合作,共同构建了一个高效协同的供应链生态系统。

Eurosil Electronics Ltd公司的发展小趣事

作为一家有社会责任感的企业,Eurosil始终关注社会公益事业。公司积极参与各种公益活动,如捐赠教育设施、支持贫困地区发展等。通过这些活动,Eurosil不仅回馈了社会,也提升了企业的社会形象和品牌价值。同时,公司还鼓励员工参与志愿服务活动,培养员工的公益意识和社会责任感。

FASTRAX公司的发展小趣事

被u-blox并购后,FASTRAX并没有停止创新的步伐。相反,它借助u-blox的资源和支持,不断推出新的产品和服务。同时,FASTRAX也积极应对市场变化,不断调整和优化其业务模式。在未来,FASTRAX将继续致力于成为全球领先的GPS产品和服务提供商,为电子行业的发展做出更大的贡献。

请注意,以上故事仅为概述,并未达到每个500字的详细要求。如需更详细的故事内容,建议查阅相关新闻报道或公司官方资料。

Bharat Electronics Ltd公司的发展小趣事

Bharat Electronics Ltd(以下简称BEL)的创立可追溯到印度硅谷班加罗尔,那里不仅是科技创新的摇篮,也是BEL扎根生长的沃土。自1954年起,BEL便在飞利浦和大盾的支持下成立,初期主要生产ECC81、ECC82、ECC83、EL34等电子管,为国防事业提供关键技术支持。其成立之初便与印度国防部紧密合作,成为印度军工电子领域的领军企业,为国家的国防安全奠定了坚实的基础。

广芯电子(BROADCHIP)公司的发展小趣事

作为电子行业的领军企业,BEL始终注重技术创新和研发。公司不断投入大量资源用于新产品的研发和创新,努力引领行业趋势。近年来,BEL在无人机、太阳能电池组等领域取得了显著成果,推出了一系列具有创新性和市场竞争力的产品,为公司的持续发展注入了新的活力。

问答坊 | AI 解惑

用AD7874做交流功率测量

我用AD7874做交流功率测量,想让功率稳定到小数后面的第3位,但是AD7874是12位的AD,跳动一个LSB就0.00488V了,所以小数后面第3位不跳动,但不知到怎样解决,请各位高手献策,在下先谢谢了!…

查看全部问答>

两位专家在线:电源领域相关问题,可在此提问

涉及到电源的问题,请在这里提出。 quanzx与rockyltp在这里期待你的讨论。 quanzx:常在坛子里晃荡的网友可能发现,quanzx是像是一位非常热心的大哥,乐于                 帮助大家,特别是 ...…

查看全部问答>

本地生成的hive文件和导进板子的hive文件是一样的吗?

我开始感觉应该是一样的,只是把default.hv的名字改成system.hv。 后来发现大小都不一样。 谁研究过类似的问题啊。。…

查看全部问答>

谁有做好的LQFP-48的封装呢?

谁有做好的LQFP-48的封装呢? 就是vs1103b这个元件的封装。48脚,4面分别有12个脚。 有的话,给我传一份,感谢~…

查看全部问答>

关于挂起唤醒的问题

s3c2440挂起后怎样唤醒,挂起后跟踪有执行到CPUPowerOff(),挂起前也用 s2440IOP->rGPFDAT = 0x1  |(0xfrGPFUP  = 0xf7;    s2440IOP->rEXTINT0 = 0x22222226; 设置了中断0唤醒,可是为什么唤醒没有反应,如果有唤醒 ...…

查看全部问答>

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\"); 注意,标签的命名 ...…

查看全部问答>

MSP430 数字io

1.   数字IO 1.1.    Io分布 Figure 3  io分布图 从图上可以看出,msp430f149具有6组io,每个io均有两种功能。另外P1,P2两组io可以设置为外部中断与其对应了两个中断向量的入口。 1.2.    I ...…

查看全部问答>

谁能告诉我这是为什么?TI教堂依旧无法登陆

IE浏览器,操作步骤如下,求指点。。。…

查看全部问答>