Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)

用STCubeIDE进行标准库开发

1、CubeIDE介绍

https://www.stmcu.com.cn/ecosystem/Cube/STM32CubeIDE

2、CubeIDE下载

点击上面的链接,登录即可下载

3、搭建Demo工程

新建一个工作空间

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第1张图片

创建一个工程

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第2张图片

选择芯片-STM32F103C8T6

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第3张图片

填写工程信息

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第4张图片

添加标准库到工程

标注库文件

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第5张图片

添加到工程中

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第6张图片

配置工程属性

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第7张图片

添加效果如下

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第8张图片

添加标准库头文件路径

这次可以直接使用快捷键AlL+Enter调出配置界面,添加头文件路径

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第9张图片

添加后如下

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第10张图片

添加标准库的源文件到工程中

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第11张图片

再次确认添加的头文件跟源文件

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第12张图片

添加全局宏定义用于工程属性

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第13张图片

移除重复的启动文件

把库文件自带的删除

修改内核文件

修改三行代码 每个加一个取地址符号

uint32_t __STREXB(uint8_t value, uint8_t *addr)
{
   uint32_t result=0;
  
    //__ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
    __ASM volatile ("strexb %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
   return(result);
}

/**
 * @brief  STR Exclusive (16 bit)
 *
 * @param  value  value to store
 * @param  *addr  address pointer
 * @return        successful / failed
 *
 * Exclusive STR command for 16 bit values
 */
uint32_t __STREXH(uint16_t value, uint16_t *addr)
{
   uint32_t result=0;
  
   //__ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
   __ASM volatile ("strexh %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
   return(result);
}

/**
 * @brief  STR Exclusive (32 bit)
 *
 * @param  value  value to store
 * @param  *addr  address pointer
 * @return        successful / failed
 *
 * Exclusive STR command for 32 bit values
 */
uint32_t __STREXW(uint32_t value, uint32_t *addr)
{
   uint32_t result=0;
  
   //__ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
   __ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) );
   return(result);
}

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第14张图片

编写用户自定义的LED代码编译发现了错误

原因:缺少文件

处理:漏加的文件

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第15张图片

编译下载

编译通过:

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第16张图片

用stlink下载

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第17张图片

注意事项:

第一次下载使用STLINK可能需要更新以下固件,重新插拔几次点击更新即可。

后记:如果不小心改动了IED默认布局可以这样重新恢复默认

Keil 5 MDK 发律师函警告了,如何用STCubeIDE开发标准库的程序(STM32F103C8T6为例)_第18张图片

参考博客:

STM32CubeIDE移植标准库_cubeide 标准库_white_loong的博客-CSDN博客

http://t.csdn.cn/dS2OP

从此再也不用担心版权问题了!!!

从此再也不用担心版权问题了!!!

从此再也不用担心版权问题了!!!

你可能感兴趣的:(STM32,stm32,单片机,嵌入式硬件,物联网)