STM32单片机

一、STM32单片机特点

1、MCU-基于ARM Cortex-M系列内核的微控制器单元

2、MPU-具有Cortex-M4和双Cortex-A7核的微控制器单元

3、STM32-基于ARM Cortex-M内核的32位单片机,主频72MHz起

4、STM32单片机内置USB、CAN、ADC、DAC等接口,支持睡眠/停机/待机模式,功耗可低至uA级,HAL库/Cube MX配置工具降低开发门槛

二、STM32最小系统

1、电源电路:3.3V LDO稳压

  • 数字电源VDD的电压范围是1.8V~3.6V,芯片内部的调压器会稳压到1.2V为数字电源供电,VDD引脚附近需要连接1个100nF的陶瓷电容(退耦),整个器件的VDD再连接1个最小4.7uF(典型值10uF)钽电容/陶瓷电容
  • 模拟电源VDDA必须连接两个退耦电容,即1个100nF陶瓷电容和1个1uF钽电容/陶瓷电容

2、复位电路:10KΩ电阻+10uF电容构成RC延时电路

3、晶振电路:8MHz外部晶振(配合负载电容22pF)

4、调试接口:SWD(2线)或JTAG(4线)接口

5、启动模式选择:BOOT0/BOOT1引脚电平配置

 BOOT0是系统功能引脚,而BOOT1与GPIO引脚共用。系统复位后,会在SYSCLK的第4个上升沿所存BOOT引脚的值。

三、开发篇
1、寄存器开发:直接操作寄存器(最高效率,代码 可移植性差)

2、标准外设库:STM32F1系列的标准库(已淘汰)

3、HAL库:硬件抽象层(Cube MX配置,代码通用性强)

4、LL库:底层库(介于HAL与寄存器之间,兼顾效率与可读性)

5、如何用HAL库实现GPIO输出控制LED闪烁?

1 //CubeMX配置PB5为GPIO_Output
2 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);//点亮LED
3 HAL_Delay(500);
4 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);//熄灭LED
5 HAL_Delay(500);
6 注意:实际工作中需用定时器替代HAL_Delay实现精准延时

6、STM32中断编程的关键步骤有哪些?

  • 使能外设时钟:_HAL_RCC_GPIOA_CLK_ENABLE()
  • 配置NVIC优先级:HAL_NVIC_SetPriority()
  • 注册中断回调函数:HAL_GPIO_EXTI_Callback()
  • 使能中断线:HAL_NVIC_EnaableIRQ()

四、硬件设计

1、STM32的ADC采样时如何消除噪声干扰?

硬件方案:

  • 在ADC引脚前加RC低通滤波(截止频率根据信号带宽设定)
  • 使用差分输入模式(抑制共模噪声)
  • 模拟电源单独滤波(磁珠+电容组合)

软件方案

  • 多次采样取平均值(典型值:16次采样)
  • 中值滤波(去除脉冲干扰)

2、STM32的PWM输出频率如何计算?

  • 公式:f_PWM = f_TIM / (PSC+1)/(ARR+1)
  • 定时器时钟84MHz(APB2总线)
  • 预分频PSC = 83  ----->  分频后1MHz
  • 自动重装载ARR = 999 ----> 周期1ms
  • 最终频率:1KHz

3、如何用STM32实现串口数据收发?

  • 硬件连接:TX/RX交叉连接+GND共地
  • 关键配置:波特率匹配(如115200);开启接收中断HAL_UART_Receive_IT()
  • 数据处理:环形缓冲区存储接收数据;添加帧头帧尾校验(如0xAA  0x55)

4、STM32低功耗模式如何选择?

  • 睡眠模式:CPU停转,外设运行(唤醒时间us级)
  • 停机模式:所有时钟停止(唤醒时间ms级)
  • 待机模式:1.8V内核电源关闭(唤醒时间10ms级)
  • 可用RTC定时唤醒+低功耗定时器组合方案

5、如何用STM32实现USB设备开发

开发模式

  • 控制器模式(需配置USB库)
  • 设备模式(HID/CDC/MSC等类)

关键步骤

  •  在CubeMX中使能USB_OTG_FS
  • 配置设备描述符(PID/VID)
  • 实现回调函数(如CDC_Receive_FS)
posted @ 2025-06-20 13:38  ycx-x  Views(63)  Comments(0)    收藏  举报