- 博客(17)
- 资源 (7)
- 收藏
- 关注
原创 STM32入门教程--分散加载
分散加载是STM32开发中一种强大的内存管理技术,通过灵活的配置文件,开发者可以精确控制程序的存储和运行分布。通过分散加载,开发者可以灵活地将代码、数据、堆栈等分配到不同的内存区域,从而优化内存使用和系统性能。在这个示例中,程序代码和只读数据被放置在Flash中(起始地址0x08000000),而读写数据和未初始化数据被分配到两个不同的SRAM区域(起始地址0x20000000和0x10000000)。通过分散加载,开发者可以将不同的代码段和数据段分配到不同的内存区域,从而充分利用芯片的内存资源。
2025-02-03 09:01:39
391
原创 stm32入门教程—i2s
在实际应用中,你可能还需要考虑音频数据的存储和播放,比如使用SD卡存储音频文件,并通过I2S接口播放。在实际应用中,你可能还需要考虑音频数据的存储和播放,比如使用SD卡存储音频文件,并通过I2S接口播放。6. 初始化结构体:使用I2S_InitTypeDef结构体配置I2S参数,包括模式、标准、数据格式、主时钟输出使能、采样频率和空闲电平选择。1. I2S引脚配置:首先需要配置STM32的I2S引脚,包括SCK(时钟线)、WS(字选择线)和SD(数据线)。// 初始化I2S和DMA。
2024-09-28 20:11:27
1814
原创 stm32入门教程——DMA之内存到外设串口DMA
在STM32F407微控制器中,使用UART(通用异步收发器)进行串口通信时,DMA(直接内存访问)可以显著提高数据传输效率,因为它允许在不占用CPU的情况下进行数据的发送和接收。以下是一个基于STM32F407的UART DMA传输的例程,包括初始化和传输过程的详细步骤。特别是在初始化函数中,你需要根据你的系统时钟配置和外设要求进行适当的设置。确保你的STM32F407开发板已经连接到你的电脑,并且你有一个支持UART通信的调试器。// 定义TX和RX的GPIO端口和引脚。// 初始化UART和DMA。
2024-04-02 22:41:17
812
1
原创 stm32入门教程——DAC介绍
然后在`MX_DAC_Init`函数中初始化DAC,设置了触发源为无(即软件触发),启用了输出缓冲器,并选择了12位的分辨率和右对齐模式。在主循环中,我们遍历正弦波数组,并使用`HAL_DAC_SetValue`和`HAL_DAC_Start`函数来输出DAC值。- 在主循环中,使用`HAL_DAC_SetValue()`函数设置DAC输出值,并使用`HAL_DAC_Start()`启动DAC输出。5. **中断配置**(可选):如果需要处理DAC相关的事件(如DMA传输完成),可以配置相应的中断。
2024-04-01 21:03:16
1593
原创 stm32入门教程——DMA介绍之memory to memory
4. **设置传输方向、增量模式和数据宽度**:在DMA_CCRx中配置数据传输的方向(是否从外设到内存或相反)、是否在传输后递增地址(增量模式)以及数据的宽度(字节、半字或全字)。1. **设置源地址和目标地址**:在DMA的通道x外设地址寄存器(DMA_CPARx)和通道x内存地址寄存器(DMA_CMARx)中分别设置外设和内存的地址。2. **配置DMA请求**:在STM32CubeMX中,选择DMA2控制器,并创建一个新的DMA请求,选择“MEMTOMEM”作为请求类型。
2024-03-30 08:16:12
1199
1
原创 stm32入门教程——ADC采样之轮询模式
2. **多通道输入**:STM32F407拥有多达19个ADC通道,其中16个外部通道和3个内部通道(如VrefInt、Vbat和温度传感器),可以同时监测多个模拟信号。1. **高分辨率**:STM32F407的ADC支持12位、10位、8位和6位的分辨率,能够提供高精度的模拟信号转换。3. **灵活的采样时间配置**:每个通道的采样时间可以独立配置,以适应不同的信号特性和转换精度要求。// 选择ADC通道0。- **初始化配置**:需要配置ADC的分辨率、采样时间、工作模式、触发源等参数。
2024-03-29 18:40:07
882
1
原创 stm32入门教程——GP IO中断介绍
4. **配置NVIC**:在NVIC中设置中断优先级(`NVIC_PriorityGroupConfig`),并启用中断(`NVIC_InitStructure`)。在这个例子中,我们配置了PA0引脚为上升沿触发的中断,并设置了相应的中断服务函数。3. **设置中断触发条件**:通过配置EXTI的中断请求线(如`SYSCFG_EXTILineConfig`)和相关的触发模式(如上升沿、下降沿或双边沿)。6. **清除中断标志**:在中断服务函数的最后,通常需要清除中断标志位,以便能够响应后续的中断事件。
2024-03-28 17:13:42
1259
原创 stm32入门教程——定时器timer之pwm
3. **定时器配置**:设置定时器的预分频器(PSC)和自动重装载寄存器(ARR),以确定PWM的频率和周期。- **占空比**:在一个PWM周期内,高电平持续的时间占总周期时间的百分比,通常用百分比表示。2. **GPIO配置**:配置与PWM输出相关的GPIO引脚为复用功能,设置为推挽输出模式。4. **PWM模式配置**:配置定时器的捕获/比较寄存器(CCR),以设置PWM的占空比。// 占空比50%,这里设置为周期的一半。5. **输出使能**:最后,使能定时器的PWM输出功能,并启动定时器。
2024-03-27 18:51:44
1219
原创 stm32入门教程——定时器timer之计数器
然后,我们使能了定时器,并在定时器中断服务函数TIM1_IRQHandler中处理定时器的更新中断。了解定时器的基本概念,如计数模式、定时器溢出、PWM 输出等。4. PWM 输出:如果需要生成 PWM(脉冲宽度调制)信号,可以配置定时器的 PWM 模式,并设置 PWM 的周期和占空比。6. 调试与测试:使用调试工具(如示波器、逻辑分析仪等)来观察定时器的输出信号,确保定时器的工作正常。
2024-03-26 20:05:43
1138
原创 stm32入门教程——iic通讯
5. **错误标志**:包括主模式下的仲裁丢失、地址/数据传输完成后的应答失败、检测误放的起始位和停止位、禁止时钟延长后出现的上溢/下溢等。2. **I2C初始化**:配置STM32F407的I2C接口,设置正确的时钟速率、地址模式(7位或10位地址)、主从模式等。- **读取数据**:发送起始信号,发送EEPROM的读地址,然后接收数据,最后发送非应答信号(NACK)和停止信号。- **写入数据**:首先发送起始信号,然后发送EEPROM的写地址,接着发送要写入的数据,最后发送停止信号。
2024-03-25 21:51:47
1304
原创 STM32入门教程——CAN驱动经验文档
以下是一个基于STM32F407微控制器的CAN通讯例程,该例程将展示如何使用STM32 HAL库来初始化CAN外设,发送和接收CAN消息。确保你的STM32F407开发板已经连接到CAN转接器,并且CAN_H和CAN_L线已经正确连接到CAN总线上。- 详细说明如何发送CAN数据,包括构建CAN消息、选择适当的缓冲区和发送机制。- 说明如何配置CAN引脚(CAN_RX和CAN_TX)的GPIO设置。- 根据你的CAN总线速度和系统时钟,你可能需要调整CAN的位时间配置。
2024-03-23 19:06:01
904
1
原创 STM32入门教程——驱动SPI Flash的经验分享
**MISO (Master In Slave Out)**: 主设备输入/从设备输出引脚。- **MOSI (Master Out Slave In)**: 主设备输出/从设备输入引脚。- **CS (Chip Select)**: 片选信号引脚,用于启动和结束SPI通信。- **Sector Erase (0x20 - 0x21)**: 扇区擦除。- **Write Disable (0x04)**: 禁止写入操作。- **Write Enable (0x06)**: 使能写入操作。
2024-03-23 17:03:27
854
1
原创 STM32入门教程——点亮一个LED
本文为初学者介绍如何使用KEIL MDK点亮stm32开发板中的一个LED。从新建工程到驱动编写。帮忙初学者入门。
2022-12-12 10:13:04
2194
stm32项目驱动步进电机,利用手机APP通过串口蓝牙与STM32通讯,控制电机
2022-11-21
FLASH驱动stm32 SPI 驱动FLASH C语言
2022-11-17
充电桩 云快充 软件源码 C语言
2022-11-17
F1C100S FreeRTOS例程,真实可用
2022-11-13
Blackfin系列DSP原理与系统设计
2011-05-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人