CubeMX配置STM32L071KZT6
明确需要配置的项
下面是工作中遇到某个项目提炼出来的的功能需求。其中MCU选用STM32L071KZT6。
名称 | 标识 | IO功能 | 对应引脚 | 备注 |
蜂鸣器 | BUZZER | 开关量输出 | PA2 | |
指示灯 | LED-R | PA15 | ||
LED-G | PA12 | |||
LED-Y | PA11 | |||
按键 | KEY-1 | 开关量输入 | PB5 | 外部中断 |
KEY-2 | PB4 | |||
KEY-3 | PB3 | |||
OLED显示屏 | RES | / | PA4 | 库函数 |
SCK | / | PA5 | ||
SDA | / | PA6 | ||
DC | / | PA7 | ||
CS | / | PB0 | ||
数据存储 | SCL | IIC | PB7 | |
SDA | PB6 | |||
传感器1 | DOUT | 开关量输入 | PA1 | |
AOUT | AD输入 | PA0 | ||
串口通信 | USART1-RX | USART1 | PA9 | |
USART1-TX | PA10 | |||
定时器中断 | TIM | 定时器内部中断 | PA11 | 100ms触发一次 时间可改 |
打开 STM32CubeMX 软件
双击桌面上的 STM32CubeMX 图标打开软件。如果是首次使用,可能需要一些初始化设置,如更新软件库等。
创建新项目
在主界面中,点击 “ACCESS TO MCU SELECTOR” 来选择微控制器。
选择芯片型号
在 “Commercial Part Number” 搜索框中输入 “STM32L071KZT6”,软件会筛选出对应的芯片。
选中 “STM32L071KZT6” 后,点击 “Start Project”,这样就开始基于该芯片创建工程了。
配置调试接口
在 “Pinout & Configuration” 选项卡中,找到 “SYS”(系统配置)选项。
在 “Debug” 选项中,根据你的调试工具来选择合适的调试模式。对于 STM32L071KZT6,常用的有 “Debug Serial Wire(SW)” 调试模式。这种模式只需要两根线(SWDIO 和 SWCLK),相对简单且占用引脚少。
配置时钟
在 “Pinout & Configuration” 选项卡中,首先配置时钟。
在 “RCC”(Reset and Clock Control)部分,将 “LSE(Low - Speed Clock)” 设置为 “Crystal/Ceramic Resonator”,这样就启用了外部低速晶振。
根据需要设置系统时钟源和倍频系数等参数,以达到期望的系统时钟频率。通过 PLL(Phase - Locked Loop)将外部晶振倍频到 32MHz(这是 STM32L071系列常用的时钟频率)。
配置普通输出IO
配置IO输入中断
根据项目需求配置引脚功能,参考文章开始的表格进行配置。
配置IO 基本功能(外部上升沿触发、引脚默认上拉高电平,IO名字位自定义)
使能外部中断
配置硬件IIC输出
打开IIC
参数设置
配置串口
配置SPI
不开启中断,采用阻塞式通信
配置AD读取
配置定时器
调用下面的函数打开关闭定时器中断,
HAL_TIM_Base_Start_IT(&htim2); //使用定时器的时候调用这个函数启动
HAL_TIM_Base_Stop_IT(&htim2); //停止定时器的时候调用这个函数关闭
定时器中断函数:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
UNUSED(htim);
if(htim == &htim2)
{
HAL_GPIO_TogglePin(LED_Y_GPIO_Port,LED_Y_Pin);
}
}
配置中断优先级
生成代码
点击 “Project” 菜单中的 “Project Manager” 选项。
在弹出的 “Generate Code” 对话框中,设置工程的基本信息。
选择 “Toolchain/IDE”,选择 “MDK - ARM”(用于 Keil),设置工程名称、保存路径等信息。
勾选“Generate peripheral initialization as a pair of'.c/.h'files per peripheral”是为了生成头文件。
点击 “GENERATE CODE” 按钮,STM32CubeMX 就会根据你的配置生成相应的工程代码。
生成完成后,你可以在指定的路径下找到工程文件,然后使用所选的集成开发环境(IDE)打开工程进行进一步的开发,如添加自己的业务逻辑代码等。