准备
STM8的编译环境有两种,一个是IAR,一个是ST官方提供的STVD+COSMIC.
由于IAR需要破解,我选择了使用官方提供的环境STVD。
STVD:IDE,可以从ST官网下载
COSMIC: 编译器,可以从它的官网下载。http://www.cosmic-software.com/download.php
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);
}
}
具体可以参考
https://blog.csdn.net/feilusia/article/details/53209672
最后,感谢这些博主的无私奉献。希望自己也可以在这儿尽一份微薄之力。
上一篇:iar输出s19用于stvp下载的设置方法
下一篇:STM8L固件烧录和加密流程
推荐阅读最新更新时间:2024-11-12 22:03
设计资源 培训 开发板 精华推荐
- RD-FSB50450A,使用 FSB50250A 家用电器三相逆变器的参考设计
- NUT2NT+:用于基于卫星的精确定位的四通道、全频、GNSS 射频比特接收器
- 1.24 至 15V DC 至 DC 单输出便携式电源
- EVAL-AD5520EB,AD5520 评估板,每引脚参数测量单元/源测量单元
- AD8604ARQZ-RL 低侧运算放大器电流监视器的典型应用
- 使用 ON Semiconductor 的 NCP1588 的参考设计
- NV47700PDAJGEVB:350 mA LDO 稳压器评估板
- 使用 Analog Devices 的 ADR380ARTZ 的参考设计
- AD5336 并行接口、四路电压输出、10 位 DAC 的典型应用
- 三轴陀螺仪MPU6050模块板