MDK版本:5.28a
STM32CubeMX版本:5.3.0
STLINK更新固件问题:http://www.openedv.com/forum.php?mod=viewthread&tid=279161&extra
MDK安装完成后,会自动弹出Pack安装界面,在搜索框中输入STM32L475VET,然后在左侧设备列表里面选中STM32L475VETx,然后在右侧Pack列表中点击相应的Install按钮进行安装。
如果下载太慢,可以点击左侧的链接,到官网下载,下载下来后,直接双击进行安装。
打开Keil uVision5,开始创建工程。点击菜单Project->New uVision Project...,然后选择项目保存路径。
随后,MDK自动弹出设备选择界面,在搜索框中输入STM32L475VET,然后选中STM32L475VETx,然后单击OK按钮。
随后MDK自动弹出运行时环境管理界面。展开CMSIS,展开里面的RTOS2,选中Keil RTX5,单击后边的描述可以查看相关Pack的详细使用文档。
展开Device,展开里面的STM32Cube HAL,选中GPIO
现在可以看到界面有黄色的警告,提示我们选择的Pack依赖其它Pack,点击左下角的Resolve按钮,自动选中依赖项。
最终效果如图
单击OK按钮,MDK会自动弹出界面,提示是否运行STM32CubeMX
点击Start STM32CubeMX按钮启动STM32CubeMX。
LED_R 接 PE7, LED_G 接 PE8, LED_B 接 PE9
本次实验只使用PE7,在STM32CubeMX中的Pinout view视图中将PE7配置为输出模式
展开左侧的System Core,点击GPIO,出现GPIO配置界面,将PE7配置为上拉模式
然后点击右上角的GENERATE CODE按钮生成代码
代码生成完成后,点击Close按钮。然后回到MDK界面,MDK界面自动弹出导入代码修改界面,点击是按钮。
点击编译按钮尝试编译
编译失败,提示有3个中断函数重定义了。这3个中断函数被RTX系统定义了。回到STM32CubeMX。
如果已经关闭了,可以通过MDK的运行时环境管理界面重新打开
在STM32CubeMX中,点击左侧的System Core中的NVIC,然后在中断配置界面中切换到Code generation选项卡,关闭其中的3个中断代码生成功能。
然后点击右上角的GENERATE CODE按钮,代码生成完成后点击Close按钮。
回到MDk界面,导入修改。然后再次编译,这次已经编译成功了。
开始写代码。
将Source Group1更改为Application,并添加C文件。
app.c中的代码:
#include
#include
static uint32_t HZ;
static void app_main(void *arg)
{
while (1) {
/* Toggle PE7 */
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_7);
/* Sleep 0.5 second */
osDelay(HZ * 0.5);
}
}
void app_init()
{
/* Get the RTOS kernel tick frequency */
HZ = osKernelGetTickFreq();
/* Initialize the RTOS Kernel */
osKernelInitialize();
/* Create a thread and add it to Active Threads */
osThreadNew(app_main, NULL, NULL);
/* Start the RTOS Kernel scheduler */
osKernelStart();
}
打开STM32CubeMX:Common Sources中的main.c文件。
在USER CODE Includes中添加函数声明
在USER CODE 2中初始化app
打开Target选项配置界面
将Debug配置为ST-Link Debuger
然后对ST-Link进行设置
设置Flash Download,下载完成后执行复位并运行。
最后,执行编译,并下载代码到开发板运行。