MCU 微控制器,在实际项目中如何选型(以 STM32为例)

本文探讨了MCU选型时的关键因素,如性能和低功耗,并介绍了实际项目中常用的Renesas和STM32系列。以STM32L031为例,详细阐述了为何在传感器设备中选择该型号,强调了性价比和可扩展性的考量。
摘要由CSDN通过智能技术生成

目录

1、MCU 选型需要考虑的一些因素

2、选型角度:从 MCU 的性能

3、实际项目中常用的 MCU

4、案例:传感器设备的 MCU 选型

5、为什么选择 STM32L031


1、MCU 选型需要考虑的一些因素

考虑项 具体描述
内存 ROM/RAM 需要提前,分析好,各个软件模块所用的 ROM/RAM 资源。最好能够细化到各个模块各占用多少 ROM/RAM。(特别是占用比较大的模块,例 Lib 相关)
速度/主频 •时钟频率越高速度越快。 •时钟频率越高功耗也就越大。 •因此,要尽量寻找可以在很高的时钟频率下运行而功耗又不高的单片机。
分析外设需求 根据设计需要,选择 GPIO 数目,ADC 数目, UART /SPI /IIC 等模块。寻找一款集成所有这些外设的单片机。
工作电压(VCC) 工作电压越高,单片机的功耗也就越大。因此,必须要尽可能地降低工作电压。我们一般都是用一次性的锂电池供电3.3V(满电)~2.4V(快没电)
低功耗设计 •低功耗标准惯例:使用中断操作的睡眠模式/低功耗模式。 •为了对低功耗操作有全面了解,开发人员还要考虑电流消耗、状态保持、唤醒时间、唤醒源,以及低功耗模式下可运行的外设等。开发人员在相同操作模式下对比同类低功耗MCU,以获得客观的逐项比较结果。 •MCU供应商通常会在数据手册第一页列出最低功耗值。虽然器件可能实现数据手册中提到的规格,但是实际的操作模式可能在应用中不一致。某些不利的
STM32G431RBT6微控制器有多个定时器,其包括基本定时器(TIM6和TIM7)和通用定时器(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)。这些定时器可以用于各种应用,例如PWM输出、输入捕获、编码器接口和定时器断等。 以下是使用STM32CubeIDE配置和使用TIM6定时器的步骤: 1. 在STM32CubeIDE创建一个新的工程,并选择您的STM32G431RBT6微控制器型号。 2. 在“Pinout & Configuration”选项卡,将TIM6的时钟使能,并将其分配给所需的GPIO引脚。 3. 在“Clock Configuration”选项卡,配置TIM6的时钟源和分频器。 4. 在“Project Manager”视图,右键单击您的工程并选择“Properties”。 5. 在“C/C++ Build”选项卡,选择“Settings”并在“Tool Settings”选项卡选择“MCU Settings”。 6. 在“TIM”选项卡,启用TIM6并配置所需的计时器模式和时钟分频器。 7. 在代码初始化TIM6,并启用断(如果需要)。 8. 在断处理程序执行所需的操作。 以下是使用HAL库在STM32CubeIDE初始化和启用TIM6的示例代码: ```c // 定义TIM6句柄 TIM_HandleTypeDef htim6; // 初始化TIM6 void MX_TIM6_Init(void) { TIM_MasterConfigTypeDef sMasterConfig = {0}; // 时钟使能 __HAL_RCC_TIM6_CLK_ENABLE(); // 配置TIM6的时钟源和分频器 htim6.Instance = TIM6; htim6.Init.Prescaler = 0; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; htim6.Init.Period = 999; htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { Error_Handler(); } // 配置TIM6的主从模式 sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) { Error_Handler(); } } // 启用TIM6 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { if(tim_baseHandle->Instance==TIM6) { // 使能TIM6时钟 __HAL_RCC_TIM6_CLK_ENABLE(); // 配置TIM6断优先级 HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0); // 使能TIM6断 HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); } } // TIM6断处理程序 void TIM6_DAC_IRQHandler(void) { // 执行所需的操作 // 清除TIM6断标志位 __HAL_TIM_CLEAR_IT(&htim6, TIM_IT_UPDATE); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值