首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Atmel Studio中F_CPU的定义

Atmel Studio中F_CPU的定义
EN

Stack Overflow用户
提问于 2018-12-14 19:46:44
回答 1查看 4.6K关注 0票数 0

我只想给你一个LED闪烁的例子(1 / 1000毫秒)。我的微控制器是ATmega328P,我使用的是Atmel Studio。

状态1:如果我没有定义F_CPU,发光二极管闪烁就是真。我使用的是默认熔丝设置(内部振荡器和CKDIV8=programmed)。

状态2:如果我定义F_CPU 8000000UL,发光二极管闪烁速度慢8倍,并且再次使用默认熔丝设置(内部振荡器和CKDIV8=programmed)。

我在1.state和2.state中都没有使用外部晶体。和相同的保险丝设置。为什么我会看到这个结果?为什么要慢8倍?

问题2:有些库需要UART值,比如F_CPU。我不使用外部振荡器。我应该在这个值中写什么?

EN

回答 1

Stack Overflow用户

发布于 2018-12-14 21:17:09

F_CPU应反映单片机设定的中央处理器时钟速度。它并不关心速度是不是因为它使用了外部时钟而设置,或者它是否是内部时钟,或者设置了什么div值。

因此,需要设置CPU值以反映F_CPU时钟配置为什么值。

根据atmega328p的数据表,未编程的设备在出厂时带有内部RC振荡器on,因此在这种情况下的DIV8时钟应为8 MHz /8=1 MHz

因此,如果您将F_CPU设置为8000000,那么任何使用F_CPU的代码都会认为它的运行速度是8 MHZ,而不是实际运行的the1 MHZ。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53779165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档