mega328p是啥单片机用的啥编程软件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mega328p是啥单片机用的啥编程软件相关的知识,希望对你有一定的参考价值。

意法半导体(STMicroelectronics)的超低功耗MCU系列采用低泄漏技术和优化设计,以实现出色的低电流消耗,使其非常适合电池供电和能量收集应用。为了充分利用这些器件的低功耗功能,有必要知道可用的低功耗模式,如何配置它们以及最适合哪些任务。本文概述了STM32L053C8 MCU上的低功耗模式。但是,由于该系列的低功耗模式相同,因此可以使用任何STM32L0器件。 STM32L1系列和STM32L4系列还包括在超低功耗系列中。这些器件是性能更高的产品,具有更高级的内核,更多的内存和更多的外围设备。它们具有与L0系列相同的低功耗模式(对于L4系列,还具有一些其他功能),因此,本文也是从了解L4系列的好入门。图1摘自ST的宣传册之一,简要总结了L0、L1和L4系列的功能和优点。

图1:STM32超低功耗产品系列的比较

当使用ST的MCU进行任何工作时,应该有两个可用的文档。首先是参考手册,对于STM32L053C8,则是STM32L0x3参考手册。本文档包含有关STM32L0x3系列的详细信息,即如何使用存储器和外设集。有关产品线中特定设备的更多详细信息,例如引脚映射、电气特性和封装信息,应使用数据表作为参考。就低功耗模式而言,参考手册将明确详细说明如何进入和退出它们,而数据手册将专门定义外围设备的可用性、可能的唤醒源和电流消耗估算。

背景介绍

STM32L0基于Cortex-M0 +内核,这意味着其低功耗功能取决于该内核的电源管理功能。可以使用系统控制块中的系统控制寄存器(SCR)来配置这些功能。不幸的是,参考手册或数据表中都没有记录内核寄存器。 ST则为那些寻求有关Cortex-M0 +的简洁文档的人员提供了STM32L0系列Cortex-M0 +编程手册。有关Cortex-M0、M0 +和M1内核的完整文档,可以在《 ARMv6-M体系结构参考手册》中找到。这两个文档都有一个关于电源管理的部分,这是开始本主题的好地方。

图2:SCR寄存器位

如图2所示,SCR由三位组成:SEVONPEND、SLEEPONEXIT和SLEEPDEEP。 SEVONPEND(发送事件在待命状态)位允许中断进入待命状态以触发唤醒事件。请注意,如果未在NVIC中启用这些中断,则仍会产生唤醒事件,但不会输入ISR。有关未决中断,使能中断或一般而言NVIC的更多信息,请参见前述Cortex-M0 +手册中的“嵌套向量中断控制器”部分。 SLEEPONEXIT位提供了一个选项,可以在异常恢复后使处理器继续执行程序之前将处理器置于低功耗模式。对于仅需要唤醒服务中断的应用程序来说,这是理想的选择。最后,SLEEPDEEP位允许进入深度睡眠状态,而不是常规睡眠状态。利用Cortex-M0 +内核的芯片制造商可以确定这些状态下设备的确切性能。睡眠状态用作睡眠模式和低功耗睡眠模式的基础,而深度睡眠状态用作停止模式和待机模式的基础。

有三种方法可以在Cortex-M0 +上进入低功耗模式。第一种是使用WFI(等待中断)指令。顾名思义,如果设备由于该指令而进入低功耗模式,则中断(在NVIC中启用)能够唤醒设备。进入低功耗模式的第二种方法是执行WFE(等待事件)指令。这与WFI指令非常相似,但具有更大的灵活性。不仅可以通过扩展中断和事件控制器(EXTI)中配置的事件唤醒设备,还可以通过NVIC中禁用的中断(只要它们在相应的外设控制寄存器中启用)唤醒。已经提到了进入低功耗模式的第三种方法。通过将SCR中的SLEEPONEXIT位置1,异常返回将使设备进入低功耗模式,就像执行WFI指令一样。请注意,在所有这些情况下,仅当没有中断或事件挂起时才进入低功耗模式。由于不能保证WFI和WFE会中止程序执行,因此通常将它们称为“提示指令”。

值得一提的最后一个内核寄存器是PRIMASK寄存器。它仅包含一个可配置位PM(可优先中断屏蔽),如果将其设置为1,它将禁用所有具有可配置优先级的中断。如果首先需要将系统恢复到工作状态,这不仅可以用于执行原子操作,而且可以延迟执行ISR。在详细说明停止模式的部分中将提供一个示例。

为了使程序员在开发C应用程序时轻松访问WFI和WFE指令,CMSIS-CORE标准提供了__WFI()和__WFE()函数。以下各节中的所有示例函数都使用__WFI()执行WFI指令并进入低功耗模式。另外,CMSIS不会直接提供对PRIMASK寄存器的访问,而是实现__disable_irq()和__enable_irq()函数,以便分别设置和清除PM位。为了检查PM位的状态,__ get_PRIMASK()函数将返回其当前状态。大多数IDE使将CMSIS驱动程序添加到项目变得非常简单。例如,在Keil中,请确保在包安装程序中安装了ARM :: CMSIS,并在创建新项目时在运行时环境管理器中仅检查“ CORE”包(在CMSIS组件)。

低功耗模式(Low-Power)

STM32L0器件实现了五种低功耗模式:低功耗运行模式、睡眠模式、低功耗睡眠模式、停止模式和待机模式。这些模式之间的差异可以用功耗,性能、唤醒时间和唤醒源来描述。如果对于这些参数中的每一个,将模式按从最佳(1)到最差(5)的顺序进行排序,则可以清楚地了解哪些取舍。一般而言,随着功耗的下降;性能下降,唤醒时间增加,唤醒源数量减少。表1总结了低功耗模式的排名。作为、示例,请考虑低功耗运行模式。它具有最佳的性能、最多的唤醒源,第二快的唤醒时间和第四低的电流消耗。

表1:基于各种工作参数的STM32L0低功耗模式的排列

在本节中,将很清楚如何得出这些排名。但是,重要的是要及早意识到它们仅在一般意义上是正确的。例如,停止模式完全有可能比低功耗睡眠模式消耗更多电流,这取决于它们的配置以及启用/禁用的外设。但是通常情况并非如此,因为停止模式对设备功能的限制远比低功耗睡眠模式所限制,以节省更多功率。

低功耗运行模式(Low-Power Run)

将其作为低功耗模式推销是相当诱人的,因为它节省能耗的主要方法是要求较低的系统时钟频率。将任何微控制器的时钟速度降低到千赫兹范围将极大地降低电流消耗,使其与普通睡眠模式相比更具竞争力。但是,通常不这样做的原因是,从长远来看,性能的降低以及静态电流消耗(不取决于时钟频率)会消耗更多的能量。取决于应用,即正在使用哪种睡眠模式或设备唤醒的频率,在较短的时间段内消耗更多的电流而不是在较长的时间段内消耗较少的电流可能更有效。 ST之所以可以将其分类为低功耗模式,是因为它们提供了将内部稳压器置于低功耗状态的能力。这将减少设备消耗的静态电流,从而将其对性能与总电流消耗之间的折衷影响降至最低。

为了将调节器切换到低功耗模式,必须满足两个条件。首先,调节器电压(VCORE)必须在2范围内。幸运的是,根据PWR_CR寄存器文档,这是调节器的默认配置。因此,除非利用器件的动态电压缩放功能,否则无需担心此先决条件。第二个条件是系统频率不超过fMSI范围1。根据MSIRANGE位的描述(在RCC_ICSCR寄存器中),它对应于大约131.072 kHz的频率。在这种速度和功率水平下,USB,ADC和TSC(触摸感应控制器)外围设备不可用。更改系统频率后,必须重新初始化之前在运行模式下初始化的所有与频率相关的外围设备(USART、计时器等),以便继续正常运行。

与其他低功耗模式不同,CPU不会在低功耗运行模式下停止。这意味着它不是通过前面讨论的WFI / WFE指令输入的,而是通过设置PWR_CR寄存器中的LPSDSR(低功耗睡眠-深度/睡眠/低功耗运行)和LPRUN(低功耗运行)位来输入的。 。请注意,必须在设置LPRUN之前设置LPSDSR,在清除LPSDSR之前必须清除LPRUN,并且在进入任何其他低功耗模式之前应清除LPRUN。由于程序在低功耗运行模式下继续执行,因此该设备被软件“唤醒”,而不是局限于有限的一组中断或事件。只需清除LPRUN位并使系统频率恢复到全速,即可使系统返回运行模式。清单1显示了使用参考手册中概述的步骤进入低功耗运行模式的整个过程。清单2演示了当设备不再需要处于低功耗运行模式时如何重新进入运行模式。

清单1:进入低功耗运行模式的示例

void enter_LPRun( void )



/* 1. Each digital IP clock must be enabled or disabled by using the

RCC_APBxENR and RCC_AHBENR registers */

RCC->APB1ENR |= RCC_APB1ENR_PWREN;

/* 2. The frequency of the system clock must be decreased to not exceed the

frequency of f_MSI range1. */

Config_SysClk_MSI_131();

// Reinitialize peripherals dependent on clock speed

USART1_Init();

SysTick_Init( 0.001 );

I2C1_Init();

/* 3. The regulator is forced in low-power mode by software

(LPRUN and LPSDSR bits set ) */

PWR->CR &= ~PWR_CR_LPRUN; // Be sure LPRUN is cleared!

PWR->CR |= PWR_CR_LPSDSR; // must be set before LPRUN

PWR->CR |= PWR_CR_LPRUN; // enter low power run mode



清单2:进入运行模式的示例

void enter_Run( void )



/* Enable Clocks */

RCC->APB1ENR |= RCC_APB1ENR_PWREN;

/* Force the regulator into main mode */

// Reset LPRUN bit

PWR->CR &= ~( PWR_CR_LPRUN );

// LPSDSR can be reset only when LPRUN bit = 0;

PWR->CR &= ~( PWR_CR_LPSDSR );

/* Set HSI16 oscillator as system clock */

Config_SysClk_HSI16();

// Reinitialize peripherals dependent on clock speed

USART1_Init();

SysTick_Init( 0.001 );

I2C1_Init();



睡眠模式(Sleep Mode)

睡眠模式是低功耗模式中最简单的一种,它以最省电的方式提供最短的唤醒时间。数据手册指出,在禁用所有外设且系统频率为16 MHz的情况下,将消耗约1 mA的电流。这远高于其他低功耗模式,后者可以实现微安或什至纳安的数量级。但是,唤醒时间几乎是最具竞争力的低功耗模式的十倍。表2显示了设备从每种低功耗模式唤醒并进入运行模式所花费的时间。唤醒时间的值取自数据表的表4。

表2:每种低功耗模式的唤醒到运行模式时间

在休眠模式下,所有外设继续运行时,仅内核停止运行。由于不必降低系统频率并且所有设备的外围设备都可以使用,因此这使进入睡眠模式几乎毫不费力。同样,退出休眠模式非常容易,因为在运行模式下可用的任何中断或事件都可以唤醒设备并以极低的延迟进行服务。因此,几乎在CPU处于自旋锁等待事件发生的任何情况下都可以使用睡眠模式。用户无需进入繁忙等待循环,只需执行WFI或WFE(取决于唤醒方法)即可暂停执行并节省功耗,直到再次需要内核为止。这
参考技术A MEJS28P13面用的什么编程软件,肯定是这个Pro tel smog protest来讲的话,这个编程软件,实际上它是专门进行一个着电动的模拟,八一双鹿版的话来讲,我经常会用到这几个这种的一个专业设备,对吧,你包括其他的这个模拟仿真,一个是模拟仿真,一个是这个模拟运行效果,最后省得最后是图纸的设立,对吧,它就给你画图纸的吗?画完图纸之后进行一个实际生产,是这么一回事儿,可以这么讲,所以这个par tells还是非常重要的一个东西,一个工具吧,这个编程工具

安伯尼克用的啥前端软件

安伯尼克用的前端软件包括:

1. React:安伯尼克使用 React 作为其主要的前端框架,它提供了快速、灵活的开发环境。它可以帮助开发者快速建立响应式网站和应用程序,并且可以更轻松地管理和迭代。

2. HTML 5:安伯尼克使用 HTML 5 作为其前端开发的基础技术,它提供了一个功能强大的网页标记语言,可以让开发者更轻松地开发和管理功能复杂的网站和应用程序。

3. CSS:安伯尼克使用 CSS 作为其前端开发的主要技术,它可以帮助开发者更容易地控制网站的布局和外观,并且可以更快地构建和迭代网站。

4. JavaScript:安伯尼克使用 JavaScript 作为其前端开发的基础技术,它可以帮助开发者在网站和应用程序中构建强大的交互功能,并且可以提高网站的可用性。

5. jQuery:安伯尼克使用 jQuery 作为其前端开发的辅助技术,它可以帮助开发者更轻松地操作 DOM 元素,并且可以更快地开发 Web 应用程序。
参考技术A 1 我不确定安伯尼克具体用的是哪个前端软件。

2 但根据我了解,常用的前端软件有Dreamweaver、Sublime Text、VS Code等,不同软件有着各自的特点和适用场景。

3 如果您对此有更深入的了解或需要更具体的信息,可以详细描述您的需求,我们可以一起探讨并寻找最适合您的前端软件。

以上是关于mega328p是啥单片机用的啥编程软件的主要内容,如果未能解决你的问题,请参考以下文章

FB、WB、IG和TW分别是啥,好像是泰国明星用的啥软件

都用的啥erp系统快速开发平台?

arduino mega2560是多少位的单片机

前端专业平时都是用的啥软件?

arduino编程用的是啥软件

各位macbook用的啥解压文件的