STM32标准库函数是否所有的都能用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32标准库函数是否所有的都能用相关的知识,希望对你有一定的参考价值。

就是stm32系类的如F1/F2/F4

参考技术A 应该不能吧,F1/F2/F4他们寄存器的定义应该不一样,同一个函数在这个芯片里面操作这个寄存器,在另一个芯片可能操作的就不是了。还是F1对应F1库函数,F2对应F2库函数比较好。 参考技术B 关注这个问题

STM8S系列基于STVD开发,标准外设库函数开发环境搭建

STM8S系列基于STVD开发,标准外设库函数开发环境搭建


官方地址:https://www.st.com/zh/development-tools/stvd-stm8.html

  • 📌STM8S/A标准外设库(库版本V2.3.1

📍官网标准外设库:https://www.st.com/zh/embedded-software/stsw-stm8069.html

  • 📍cosmic stm8 32k C编译器 v4.3.4

https://www.jb51.net/softs/626867.html#downintro2

🌻从外设标准库中拷贝通用模板

  • 🔗拷贝一份STM8S_StdPeriph_Template文件夹

  • 🧺删除其中的EWSTM8(这个是IAR开发环境的模版,这里不需要)

  • ⛳打开已安装的STVD软件,菜单File-Open Workspace

  • ✅找到目录下的\\STM8S_StdPeriph_Template\\STVD\\Cosmic\\Project.stw打开。

  • 🌿在弹出的对话框一路点Yes
    - 📜得到一个多型号的工程

  • 🛠根据自己的开发板型号保留其对应的开发配置内容,其他的无关的型号的可以删除,也可以不删除,这一点,后面将做额外补充说明。

  • ⚡在保留多工程模式下,按Shift键 + F7键,或者菜单Project-Settings,设置源文件路径:(这里默认设置的是结构树中的第一个工程stm8s208)

  • 🚩推荐将\\en.stsw-stm8069\\STM8S_StdPeriph_Lib\\LibrariesSTM8S_StdPeriph_Driver文件夹保存到另一个独立的地方。因为这些标准外设库一般情况下不需要去修改它。
  • 🔖在保留其他型号工程共存模式下,每个型号的工程单独进行设置方法:
  • 🔧设置编译生成Hex文件以及显示编译信息:

🍁容量信息显示参考前面相关篇文章内容。

chex -o $(OutputPath)$(TargetSName).s19 $(OutputPath)$(TargetSName).sm8
chex -fi -o $(OutputPath)$(TargetSName).hex $(OutputPath)$(TargetSName).sm8
size $(OutputPath)$(TargetSName).map
  • 🌼效果如下:

在保留其他开发型号时,编译方法

  • 🔨在所选型号上右键,选择编译。

🎉这种方式将编译指定选择型号的工程进行编译。

🎋到这里,基本的库函数开发环境已经搭建好了。

🌻库函数下,GPIO点灯示例

/* Includes ------------------------------------------------------------------*/
#include "stm8s.h"

/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
#define LED_GPIO_PORT  (GPIOD)
#define LED_GPIO_PINS  (GPIO_PIN_7 | GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_0)
/* Private functions ---------------------------------------------------------*/
void Delay (uint16_t ms);


void main(void)

	GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
  /* Infinite loop */
  while (1)
	
	/* Toggles LEDs */
    GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
    Delay(500);
		
	


/**
  * @brief Delay
  * @param nCount
  * @retval None
  */
void Delay(uint16_t ms)

	uint16_t i,j;
 for ( i=0; i<=ms; i++)
     for ( j=0; j<120; j++) // Nop = Fosc/4
        _asm("nop"); //Perform no operation


#ifdef USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param file: pointer to the source file name
  * @param line: assert_param error line source number
  * @retval : None
  */
void assert_failed(u8* file, u32 line)
 
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\\r\\n", file, line) */

  /* Infinite loop */
  while (1)
  
  

#endif

📚工程模版

✨以stm8s903芯片创建的模版

链接:https://pan.baidu.com/s/1Hppuz100bbALZQ8BWuQx4A 
提取码:06hu

以上是关于STM32标准库函数是否所有的都能用的主要内容,如果未能解决你的问题,请参考以下文章

STM32 学习6 CMSIS库函数标准及库函数工程模板

STM32 学习6 CMSIS库函数标准及库函数工程模板

STM32CubeMx:是不是可以使用 SPL(标准外设库)配置 ST 控制器

STM32 的 printf() 函数串口重定向(HAL库标准库都适用)

STM32 固件库与 CMSIS 标准如何理解?

STM32学习(28)STM32实现光照度采集(标准库和HAL库实现)