×
嵌入式 > 技术百科 > 详情

STM8L10x环境搭建

发布时间:2020-12-17 发布时间:
|

准备

STM8的编译环境有两种,一个是IAR,一个是ST官方提供的STVD+COSMIC.

由于IAR需要破解,我选择了使用官方提供的环境STVD。


STVD:IDE,可以从ST官网下载

stm8_stdperiph_lib:标准库,这个也可以从ST官网下载,不同型号的芯片对应不同的库。有时候官网登不上不知道什么原因。


之前在stm32上用惯了标准库,所以,这次使用stm8也使用标准库编程,这样不需要太关注底层的寄存器。但是,标准库并不太标准,有些坑,需要注意,后面会说到。


建立目录

cos: 放置编译出来的相关文件

lib: 放置标准库。把标准库中的inc和src拷贝过来

src: 放置自己的业务程序文件,包括main.c。

另外,需要把标准库中的stm8l10x_conf.h、stm8l10x_it.c、stm8l10x_it.h拷贝到src目录下


配置

STVD安装完成后,打开。跟其他keil等IDE没有太多区别,都是大同小异的。


创建WorkSpace,Project

选择编译器,就是刚才安装好的COSMIC。

选择IC型号

添加文件

编译

编译,然后保存关闭。这样会在cos目录下自动生成main.c和stm8_interrupt_vector.c。删除该main.c文件,因为在src下我们已经创建了。再次打开工程,会报个警告,找不到main.c,忽略。

直接编译应该是会报错的,重复定义NonHandledInterrupt。

注释掉stm8_interrupt_vector.c中的该函数


#if 0

@far @interrupt void NonHandledInterrupt (void)

{

/* in order to detect unexpected events during development, 

   it is recommended to set a breakpoint on the following instruction

*/

return;

}

#endif


另外,包含头文件stm8l10x_it.h


#include "stm8l10x_it.h"


这样下来,基本的环境就搭建完成了。环境搭建可以参考:

https://wenku.baidu.com/view/87aade66b84ae45c3b358cc3.html

https://blog.csdn.net/sy_lixiang/article/details/8461829


内存

由于是八位单片机,很多东西跟32位的不太一样,需要注意的。

第一个需要注意的是内存。看完这两篇文章就清楚了:

https://blog.csdn.net/sygdp21/article/details/17420393

https://blog.csdn.net/dongganxiao_maidou/article/details/73775533


GPIO

stm8l101的标准库中gpio的操作中有bug


void GPIO_WriteBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, BitAction GPIO_BitVal)

{

  /* Check the parameters */

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  assert_param(IS_STATE_VALUE(GPIO_BitVal));

 

  if (GPIO_BitVal != RESET)

  {

    //SetBit(GPIOx->ODR, GPIO_Pin);//BUG语句,GPIO_Pin是按位来定义的,却被SetBit以字节来操作。

    GPIOx->ODR |= GPIO_Pin;    

  }

  else

  {

    //ClrBit(GPIOx->ODR, GPIO_Pin);//BUG语句,GPIO_Pin是按位来定义的,却被SetBit以字节来操作。

    GPIOx->ODR &= (uint8_t)(~GPIO_Pin);    

  }

}


 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题