1. stm32和stm8有啥区别
1,操作不同:用寄存器或者库的方式编写,8相对简单。32较复杂。
2,价格不同:8大部分在10块以内。32大部分在10块以上。
3,相关资料不同:8的资料少,可用模块少。32的资料多,可用模块多。
(1)stm8sspi程序扩展阅读:
架构优势
除新增的功能强化型外设接口外,STM32互连系列还提供与其它STM32微控制器相同的标准接口,这种外设共用性提升了整个产品家族的应用灵活性,使开发人员可以在多个设计中重复使用同一个软件。
新STM32的标准外设包括10个定时器、两个12位1-Msample/s 模数转换器,两个12位数模转换器、两个I2C接口、五个USART接口和三个SPI端口。新产品外设共有12条DMA通道,还有一个CRC计算单元,像其它STM32微控制器一样,支持96位唯一标识码。
新系列微控制器还沿续了STM32产品家族的低电压和节能两大优点。2.0V到3.6V的工作电压范围兼容主流的电池技术,如锂电池和镍氢电池,封装还设有一个电池工作模式专用引脚Vbat。以72MHz频率从闪存执行代码,仅消耗 27mA电流。
低功耗模式共有四种,可将电流消耗降至两微安。从低功耗模式快速启动也同样节省电能;启动电路使用STM32内部生成的8MHz信号,将微控制器从停止模式唤醒用时小于6微秒。
2. 求教stm8l将系统时钟切换到外部晶振
首先看一下 STM8S103K3 的时钟结构图,可以帮助你很好的理解。
这里有几个时钟,就是图中标识的时钟,需要弄清楚一下:
fHSE: 外部高速晶振时钟,它是由外部晶振产生,大小由外部晶振大小决定,STM8S的外部晶振范围:1-24M,看图中的”HSE OSC 1-24M“。
fHSI:内部RC高速时钟,它是由内部的RC震荡电路产生的,其值16M。但是可以经过后面的分频器分频,四个分频系数可供选择(1,2,4,8)。注:精准度比外部晶振的要稍差一些。
fMASTER:主时钟,它是由HSE 或者 HSI提供时钟,主要功能给外围设备(peripherals,如I2C,SPI,ADC等)提供时钟,还有给CPU提供时钟源。
fCPU:cpu时钟,它是由fMASTER经过分频得到,其作用就是给CPU提供时钟,一个机械周期就是一个fCPU的时钟周期。
下面是时钟的源码部分,可供大家参考。
这里写了四段程序,分别是:
使用高速内部时钟(寄存器版)
使用高速内部时钟(库函数版)
使用外部时钟(寄存器版)
使用外部时钟(库函数版)
源码如下,看注释应该就可以了。
3. STM8S207_UART1串口发送中断程序
void CLK_INIT(void)
{
CLK_CKDIVR = 0x19; /*HSI/8、CPU = 2/2,1M速度*/
CLK_PCKENR1 = 0x04; /*只开启uart1的时钟*/
CLK_PCKENR2 = 0x00; /*打开ADC的时钟*/
}
void IO_INIT(void)
{
PA_CR1 = 0x00; /*推挽输出*/
PA_CR2 = 0x00; /*最大输出为2MHZ,禁止外部中断*/
PA_DDR |= 0x20; /*PA5为输出*/
}
void UART1_INIT(void)
{
UART1_BRR2 = 0x00;
UART1_BRR1 = 0x0d; /*2M的Fmaster下9600的波特率*/
UART1_DR = 0xaa;
UART1_CR2 = 0x08; /*发送完寄存器空,发送使能*/
UART1_CR3 = 0x00; /*1个停止位*/
}
#pragma vector = UART1_T_TXE_vector
__interrupt __root void UART1_TX(void)
{
UART1_SR = 0x00;
UART1_DR = 0xaa;
}
只作为参考,希望对您有帮助,谢谢!