刚来到论坛,看多数都是使用51系列的单片机。个人使用stm8系列单片机已有一段时间。发一些使用的感受来。
1.设置IO口的扩展功能时比如USART、AD这些时,必须设置好IO的输入输出状态。比如设为串口接收时,就需要设置为内部输入无中断上拉。我以前使用的是台系比如holtek芯片,刚转到stm8平台时这个问题让我查了很长时间,台系芯片设置很简单,只需要设置为扩展功能就OK。
2.对单个IO进行定义。51系列很简单的,比如sbit P00 = P1^0;台系芯片也很简单 比如#define LED FP10(sonix单片机的写法)但是STM8就得
typedef union{
unsigned char byte;
struct{
unsigned char BIT0 :1;
unsigned char BIT1 :1;
unsigned char BIT2 :1;
unsigned char BIT3 :1;
unsigned char BIT4 :1;
unsigned char BIT5 :1;
unsigned char BIT6 :1;
unsigned char BIT7 :1;
}BITS;
}PA_ODR_STR;
extern volatile PA_ODR_STR _PA_ODR @0x5000;
#define PAODR_ODR0 _PA_XXXXXXXXXXXT0
#define PAODR_ODR1 _PA_XXXXXXXXXXXT1
麻烦了许多。后来找到了另外一种定义方法,对寄存器进行位寻址_Bool LED1 @ PD_ODR:0; 但是写起来就比较繁琐了。
比较方便的做法是把上面的结构体做成头文件,以后编程只需要调用即可。
3.使用库还是直接操作寄存器?我刚开始也想用库来着,后来觉得没必要,也就那几个寄存器,还是自己搞搞快,还节省代码。^_^
200字以内,仅用于支线交流,主线讨论请采用回复功能。