蓝牙STM8S003K3 STM8S003F3 Rev4

合集下载

stm8s和stm8l低功耗对比

stm8s和stm8l低功耗对比

stm8s和stm8l低功耗对⽐stm8s和stm8l低功耗对⽐ 在低功耗应⽤中,⼀般来说mcu是常态halt模式,然后偶尔被唤醒(外部中断或者内部定时唤醒)进⼊运⾏模式。

所以对⽐低功耗性能,⼀般来说只需要对⽐run模式和halt下的功耗即可,因为项⽬选⽤的是通过内部定时器唤醒,所以选⽤active halt mode。

以下是stm8s003和stm8l151在这两种模式下的功耗对⽐:run mode:stm8sstm8l对⽐ 在使⽤同样的16M内部RC振荡器情况下,stm8s 3.7ma,stm8l 3.54ma,两款mcu耗电量差不多。

active halt mode:stm8sstm8l对⽐ 在同样的关闭外设,且使⽤内部低速RC振荡器唤醒的情况下:stm8s 10ua,stm8l 0.54ua。

⼤约有20倍的差距,不过对于要求不是特别⾼的情况下,ua级别的差距影响不会太⼤。

实测:为了实际验证,分别将单⽚机焊接到空板⼦上编写代码进⾏测试。

stm8 编写如下代码:32ms唤醒⼀次主程序:void main(void){CLK_HSECmd ( DISABLE );CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);AWU_DeInit();AWU_Init(AWU_TIMEBASE_32MS);CLK_SlowActiveHaltWakeUpCmd(ENABLE); //关闭活跃停机模式下的电压调节器(MVR)CLK_FastHaltWakeUpCmd(DISABLE); //关闭快速唤醒FLASH_SetLowPowerMode(FLASH_LPMODE_POWERDOWN); //设置为停机后flash掉电GPIO_Init(GPIOA,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_Init(GPIOB,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_Init(GPIOC,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_Init(GPIOD,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_WriteLow(GPIOA,GPIO_PIN_ALL);GPIO_WriteLow(GPIOB,GPIO_PIN_ALL);GPIO_WriteLow(GPIOC,GPIO_PIN_ALL);GPIO_WriteLow(GPIOD,GPIO_PIN_ALL);AWU_Cmd(ENABLE);while(1){ halt();}}中断处理程序:INTERRUPT_HANDLER(AWU_IRQHandler, 1){/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/u8 awu_temp = 0;awu_temp = AWU_GetFlagStatus();}程序下载到单⽚机后,串到台式万⽤表上实测电流11ua,见下图:stm8l 编写如下代码:32ms唤醒⼀次主程序:void main(void){GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Write(GPIOA,0x00);GPIO_Write(GPIOB,0x00);GPIO_Write(GPIOC,0x00);GPIO_Write(GPIOD,0x00);GPIO_Write(GPIOE,0x00);GPIO_Write(GPIOF,0x00);RTC_DeInit(); //初始化默认状态CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); //允许RTC时钟CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1); // 38K/1 RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div2); //38/2=19KRTC_SetWakeUpCounter(19*32); //19*32 32msRTC_ITConfig(RTC_IT_WUT, ENABLE); //开启中断PWR_FastWakeUpCmd(DISABLE); //关闭快速唤醒功能PWR_UltraLowPowerCmd(ENABLE);//超低功耗RTC_WakeUpCmd(ENABLE);while(1){ halt();}}中断处理程序:INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler,4){/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/RTC_ClearITPendingBit(RTC_IT_WUT);}将程序下载到单⽚机后,串到台式万⽤表测试电流在4ua左右,见下图:。

stm8开发环境配置及测试

stm8开发环境配置及测试

stm8开发环境配置及测试需要准备的软件,硬件,IAR for stm8 (EWSTM8)、stm8s标准固件库、ST-LINK、STM8s003f3核⼼板安装IAR(其中包括st-link的驱动),使⽤IAR新建⼀个⼯程,具体步骤如下:1,File->New->Workspace2,创建⼀个⼯程:Project->Create New Project...3,在弹出的对话框中选择C,-》OK4,根据提⽰保存你的⼯程5,从stm8s标准固件库中复制Libraries⽬录到你的⼯程⽬录,复制\STM8S_StdPeriph_Lib_V2.1.0\Project\STM8S_StdPeriph_Examples\GPIO到你的⼯程⽬录6,IAR的⼯程配置:在⼯程中添加两个组Libraries,MyApp。

右击你的⼯程->Add->Add Group7,将库中的*.c⽂件和主程序⽬录的*.c⽂件分别添加到Libraries, MyApp;右击相应组->add->add files8,选择单⽚机型号:右击你的⼯程Options->General Options->选择你单⽚机的型号9,配置头⽂件搜索路径:上⼀步切换到C/C++ Complier->Preprocessor->Additional include directory: ( one per line)10,选择调试器:切换到Debugger->Driver选择ST-Link->OK现在开始编译拍错1,右键main.c->Comliper会提⽰保存workspace,按提⽰操作,编译中会提⽰没有定义Fatal Error[Pe035]: #error directive: "Please select first the target STM8S/A device used in your application (in stm8s.h file)" C:\Documents and Settings\Administrator\桌⾯\EWSTM8_turial\Libraries\STM8S_StdPeriph_Driver\inc\stm8s.h 65双击该条提⽰,⾃动定位到错误位置,表⽰没有定义单⽚机型号,定义上#define STM8S003F32,再次执⾏1,这次的提⽰变为Error[Pe020]: identifier "GPIOH" is undefined C:\Documents and Settings\Administrator\桌⾯\EWSTM8_turial\GPIO\GPIO_Toggle\main.c 54双击该提⽰,定位到错误位置,向上找到 #define LED_GPIO_PORT (GPIOH)将GPIOH改为GPIOD(STM8S003F3没有GPIOH这个IO)3,再次执⾏1,OK没有错误4,整体编译⼀遍:右击⼯程->Make.在编译过程中有⼀部分⽂件会报错,不要担⼼,这些是STM8S003F3中没有的资源,将报错的⽂件删除即可另外对固件库了解后,可以只添加需要的部分,⽐如这次使⽤的是stm8s_gpio.c,那么只添加stm8s_gpio.c就可以了5,删除不需要的,再编译:OK没有错误,没有警告下载并调试,1,将STM8核⼼板通过SWIM与ST-Link连接起来,注意线序2,将ST-Link连接到电脑,(在设备管理器中usb总线中会看到ST-link的相关信息)3,给stm8核⼼板加电4,点击IAR的Download and debug,点击Go。

stm8s103头文件

stm8s103头文件

stm8s103头⽂件//==============================================================================//============================================================================== //==============================================================================//INTERRUPT ⼊⼝//==============================================================================#ifndef __STM8S103_H#define __STM8S103_Htypedef unsigned char uint8;typedef unsigned int uint16;#define BIT0 (0x01)#define BIT1 (0x02)#define BIT2 (0x04)#define BIT3 (0x08)#define BIT4 (0x10)#define BIT5 (0x20)#define BIT6 (0x40)#define BIT7 (0x80)#define _INT_RESET 0x00#define _INT_TRAP 0x01#define _INT_TLI 0x02#define _INT_AWU 0x03#define _INT_CLK 0x04#define _INT_PA 0x05#define _INT_PB 0x06#define _INT_PC 0x07#define _INT_PD 0x08#define _INT_PE 0x09#define _INT_CAN_TX 0x0A#define _INT_CAN_RX 0x0B#define _INT_SPI 0x0C#define _INT_TIM1 0x0D#define _INT_TIM1CC 0x0E#define _INT_TIM2 0x0F#define _INT_TIM2CC 0x10#define _INT_TIM3 0x11#define _INT_TIM3CC 0x12#define _INT_UART1_TX 0x13#define _INT_UART1_RX 0x14#define _INT_IIC 0x15#define _INT_UART2_TX 0x16#define _INT_UART2_RX 0x17#define _INT_ADC1 0x18#define _INT_TIM14 0x19#define _INT_FLASH 0x1A//==============================================================================////============================================================================== #define PA_ODR (*(volatile unsigned char*)0x5000)#define PA_IDR (*(volatile unsigned char*)0x5001)#define PA_DDR (*(volatile unsigned char*)0x5002)#define PA_CR1 (*(volatile unsigned char*)0x5003)#define PA_CR2 (*(volatile unsigned char*)0x5004)#define PB_ODR (*(volatile unsigned char*)0x5005)#define PC_ODR (*(volatile unsigned char*)0x500a)#define PC_IDR (*(volatile unsigned char*)0x500b)#define PC_DDR (*(volatile unsigned char*)0x500c)#define PC_CR1 (*(volatile unsigned char*)0x500d)#define PC_CR2 (*(volatile unsigned char*)0x500e)#define PD_ODR (*(volatile unsigned char*)0x500f)#define PD_IDR (*(volatile unsigned char*)0x5010)#define PD_DDR (*(volatile unsigned char*)0x5011)#define PD_CR1 (*(volatile unsigned char*)0x5012)#define PD_CR2 (*(volatile unsigned char*)0x5013)#define PE_ODR (*(volatile unsigned char*)0x5014)#define PE_IDR (*(volatile unsigned char*)0x5015)#define PE_DDR (*(volatile unsigned char*)0x5016)#define PE_CR1 (*(volatile unsigned char*)0x5017)#define PE_CR2 (*(volatile unsigned char*)0x5018)#define PF_ODR (*(volatile unsigned char*)0x5019)#define PF_IDR (*(volatile unsigned char*)0x501a)#define PF_DDR (*(volatile unsigned char*)0x501b)#define PF_CR1 (*(volatile unsigned char*)0x501c)#define PF_CR2 (*(volatile unsigned char*)0x501d)#define PG_ODR (*(volatile unsigned char*)0x501e)#define PG_IDR (*(volatile unsigned char*)0x501f)#define PG_DDR (*(volatile unsigned char*)0x5020)#define PG_CR1 (*(volatile unsigned char*)0x5021)#define PG_CR2 (*(volatile unsigned char*)0x5022)#define PH_ODR (*(volatile unsigned char*)0x5023)#define PH_IDR (*(volatile unsigned char*)0x5024)#define PH_DDR (*(volatile unsigned char*)0x5025)#define PH_CR1 (*(volatile unsigned char*)0x5026)#define PH_CR2 (*(volatile unsigned char*)0x5027)#define PI_ODR (*(volatile unsigned char*)0x5028)#define PI_IDR (*(volatile unsigned char*)0x5029)#define PI_DDR (*(volatile unsigned char*)0x502a)#define PI_CR1 (*(volatile unsigned char*)0x502b)#define PI_CR2 (*(volatile unsigned char*)0x502c)#define FLASH_CR1 (*(volatile unsigned char*)0x505A) #define FLASH_CR2 (*(volatile unsigned char*)0x505B) #define FLASH_NCR2 (*(volatile unsigned char*)0x505C) #define FLASH_FPR (*(volatile unsigned char*)0x505D) #define FLASH_NFPR (*(volatile unsigned char*)0x505E) #define FLASH_IAPSR (*(volatile unsigned char*)0x505F) #define FLASH_PUKR (*(volatile unsigned char*)0x5062) #define FLASH_DUKR (*(volatile unsigned char*)0x5064) #define EXTI_CR1 (*(volatile unsigned char*)0x50A0)#define EXTI_CR2 (*(volatile unsigned char*)0x50A1)#define RST_SR (*(volatile unsigned char*)0x50B3)#define CLK_ICKR (*(volatile unsigned char*)0x50C0)#define CLK_ECKR (*(volatile unsigned char*)0x50C1) #define CLK_CMSR (*(volatile unsigned char*)0x50C3) #define CLK_SWR (*(volatile unsigned char*)0x50C4) #define CLK_SWCR (*(volatile unsigned char*)0x50C5)#define WWDG_CR (*(volatile unsigned char*)0x50D1) #define WWDG_WR (*(volatile unsigned char*)0x50D2)#define IWDG_KR (*(volatile unsigned char*)0x50E0) #define IWDG_PR (*(volatile unsigned char*)0x50E1) #define IWDG_RLR (*(volatile unsigned char*)0x50E2)#define AWU_CSR1 (*(volatile unsigned char*)0x50F0) #define AWU_ARP (*(volatile unsigned char*)0x50F1) #define AWU_TBR (*(volatile unsigned char*)0x50F2) #define BEEP_CSR (*(volatile unsigned char*)0x50F3)#define SPI_CR1 (*(volatile unsigned char*)0x5200)#define SPI_CR2 (*(volatile unsigned char*)0x5201)#define SPI_ICR (*(volatile unsigned char*)0x5202)#define SPI_SR (*(volatile unsigned char*)0x5203)#define SPI_DR (*(volatile unsigned char*)0x5204)#define SPI_CRCPR (*(volatile unsigned char*)0x5205) #define SPI_RXCRCR (*(volatile unsigned char*)0x5206) #define SPI_TXCRCR (*(volatile unsigned char*)0x5207) #define I2C_CR1 (*(volatile unsigned char*)0x5210)#define I2C_CR2 (*(volatile unsigned char*)0x5211)#define I2C_FREQR (*(volatile unsigned char*)0x5212) #define I2C_OARL (*(volatile unsigned char*)0x5213)#define I2C_OARH (*(volatile unsigned char*)0x5214)#define I2C_DR (*(volatile unsigned char*)0x5216)#define I2C_SR1 (*(volatile unsigned char*)0x5217)#define I2C_SR2 (*(volatile unsigned char*)0x5218)#define I2C_SR3 (*(volatile unsigned char*)0x5219)#define I2C_ITR (*(volatile unsigned char*)0x521A)#define I2C_CCRL (*(volatile unsigned char*)0x521B)#define I2C_CCRH (*(volatile unsigned char*)0x521C)#define I2C_TRISER (*(volatile unsigned char*)0x521D) #define I2C_PECR (*(volatile unsigned char*)0x521E)#define UART1_SR (*(volatile unsigned char*)0x5230)#define UART1_DR (*(volatile unsigned char*)0x5231) #define UART1_BRR1 (*(volatile unsigned char*)0x5232) #define UART1_BRR2 (*(volatile unsigned char*)0x5233) #define UART1_CR1 (*(volatile unsigned char*)0x5234) #define UART1_CR2 (*(volatile unsigned char*)0x5235) #define UART1_CR3 (*(volatile unsigned char*)0x5236) #define UART1_CR4 (*(volatile unsigned char*)0x5237) #define UART1_CR5 (*(volatile unsigned char*)0x5238) #define UART1_GTR (*(volatile unsigned char*)0x5239) #define UART1_PSCR (*(volatile unsigned char*)0x523a) #define TIM1_CR1 (*(volatile unsigned char*)0x5250)#define TIM1_CR2 (*(volatile unsigned char*)0x5251)#define TIM1_SMCR (*(volatile unsigned char*)0x5252) #define TIM1_ETR (*(volatile unsigned char*)0x5253)#define TIM1_IER (*(volatile unsigned char*)0x5254)#define TIM1_SR1 (*(volatile unsigned char*)0x5255)#define TIM1_SR2 (*(volatile unsigned char*)0x5256)#define TIM1_EGR (*(volatile unsigned char*)0x5257)#define TIM1_CCMR1 (*(volatile unsigned char*)0x5258) #define TIM1_CCMR2 (*(volatile unsigned char*)0x5259)#define TIM1_ARRH (*(volatile unsigned char*)0x5262) #define TIM1_ARRL (*(volatile unsigned char*)0x5263) #define TIM1_RCR (*(volatile unsigned char*)0x5264)#define TIM1_CCR1H (*(volatile unsigned char*)0x5265) #define TIM1_CCR1L (*(volatile unsigned char*)0x5266) #define TIM1_CCR2H (*(volatile unsigned char*)0x5267) #define TIM1_CCR2L (*(volatile unsigned char*)0x5268) #define TIM1_CCR3H (*(volatile unsigned char*)0x5269) #define TIM1_CCR3L (*(volatile unsigned char*)0x526A) #define TIM1_CCR4H (*(volatile unsigned char*)0x526B) #define TIM1_CCR4L (*(volatile unsigned char*)0x526C) #define TIM1_BKR (*(volatile unsigned char*)0x526D)#define TIM1_DTR (*(volatile unsigned char*)0x526E)#define TIM1_OISR (*(volatile unsigned char*)0x526F) #define TIM2_CR1 (*(volatile unsigned char*)0x5300)#define TIM2_IER (*(volatile unsigned char*)0x5303)#define TIM2_SR1 (*(volatile unsigned char*)0x5304)#define TIM2_SR2 (*(volatile unsigned char*)0x5305)#define TIM2_EGR (*(volatile unsigned char*)0x5306)#define TIM2_CCMR1 (*(volatile unsigned char*)0x5307) #define TIM2_CCMR2 (*(volatile unsigned char*)0x5308) #define TIM2_CCMR3 (*(volatile unsigned char*)0x5309) #define TIM2_CCER1 (*(volatile unsigned char*)0x530A) #define TIM2_CCER2 (*(volatile unsigned char*)0x530B) #define TIM2_CNTRH (*(volatile unsigned char*)0x530C) #define TIM2_CNTRL (*(volatile unsigned char*)0x530D) #define TIM2_PSCR (*(volatile unsigned char*)0x530E) #define TIM2_ARRH (*(volatile unsigned char*)0x530F) #define TIM2_ARRL (*(volatile unsigned char*)0x5310) #define TIM2_CCR1H (*(volatile unsigned char*)0x5311) #define TIM2_CCR1L (*(volatile unsigned char*)0x5312) #define TIM2_CCR2H (*(volatile unsigned char*)0x5313) #define TIM2_CCR2L (*(volatile unsigned char*)0x5314) #define TIM2_CCR3H (*(volatile unsigned char*)0x5315) #define TIM2_CCR3L (*(volatile unsigned char*)0x5316) #define TIM4_CR1 (*(volatile unsigned char*)0x5340)#define TIM4_IER (*(volatile unsigned char*)0x5343)#define TIM4_SR (*(volatile unsigned char*)0x5344) #define TIM4_EGR (*(volatile unsigned char*)0x5345)#define TIM4_CNTR (*(volatile unsigned char*)0x5346) #define TIM4_PSCR (*(volatile unsigned char*)0x5347) #define TIM4_ARR (*(volatile unsigned char*)0x5348)#define ADC_DB0R (*(volatile unsigned char*)0x53E0) #define ADC_DB1R (*(volatile unsigned char*)0x53E1) #define ADC_DB2R (*(volatile unsigned char*)0x53E2) #define ADC_DB3R (*(volatile unsigned char*)0x53E3) #define ADC_DB4R (*(volatile unsigned char*)0x53E4) #define ADC_DB5R (*(volatile unsigned char*)0x53E5) #define ADC_DB6R (*(volatile unsigned char*)0x53E6) #define ADC_DB7R (*(volatile unsigned char*)0x53E7) #define ADC_DB8R (*(volatile unsigned char*)0x53E8) #define ADC_DB9R (*(volatile unsigned char*)0x53E9) #define ADC_DB10R (*(volatile unsigned char*)0x53EA) #define ADC_DB11R (*(volatile unsigned char*)0x53EB) #define ADC_DB12R (*(volatile unsigned char*)0x53EC) #define ADC_DB13R (*(volatile unsigned char*)0x53ED) #define ADC_DB14R (*(volatile unsigned char*)0x53EE)#define ADC_CSR (*(volatile unsigned char*)0x5400)#define ADC_CR1 (*(volatile unsigned char*)0x5401)#define ADC_CR2 (*(volatile unsigned char*)0x5402)#define ADC_CR3 (*(volatile unsigned char*)0x5403)#define ADC_DRH (*(volatile unsigned char*)0x5404)#define ADC_DRL (*(volatile unsigned char*)0x5405)#define ADC_TDRH (*(volatile unsigned char*)0x5406)#define ADC_TDRL (*(volatile unsigned char*)0x5407)#define ADC_HTRH (*(volatile unsigned char*)0x5408)#define ADC_HTRL (*(volatile unsigned char*)0x5409)#define ADC_LTRH (*(volatile unsigned char*)0x540A)#define ADC_LTRL (*(volatile unsigned char*)0x540B)#define ADC_AWSRH (*(volatile unsigned char*)0x540C)#define ADC_AWSRL (*(volatile unsigned char*)0x540D)#define ADC_AWCRH (*(volatile unsigned char*)0x540E)#define ADC_AWCRL (*(volatile unsigned char*)0x540F)#define ADD_ID_S 0x4865 //ID号起始地址#define ADD_ID_E 0X4870 //ID号结束地址#define ADD_FLASH_S 0X8000 //flash起始地址#define ADD_FLASH_E 0X9fff //flash结束地址#define CFG_GCR (*(volatile unsigned char*)0x7F60)//==============================================================================#define SBIT(var,bit) (var|=(1<<(bit))) //位设置#define CBIT(var,bit) (var&=(~(1<<(bit)))) //位清零#define RBIT(var,bit) (var^=(1<<(bit))) //位取反#define GBIT(var,bit) (var&(1<<bit)) //取位数据#define _IO_OH(P,B) (SBIT(P##_ODR,B)) //将端⼝P 的B位置1#define _IO_OL(P,B) (CBIT(P##_ODR,B)) //将端⼝P 的B位置0#define _IO_OR(P,B) (RBIT(P##_ODR,B)) //将端⼝P 的B位取反#define _IO_DO(P,B) (GBIT(P##_ODR,B)) //取端⼝P的B位输出值#define _IO_MO(P,B) (SBIT(P##_DDR,B)) //端⼝P的B位设置为输出⼝#define _IO_MI(P,B) (CBIT(P##_DDR,B)) //端⼝P的B位设置为输⼊⼝#define _IO_DI(P,B) (GBIT(P##_IDR,B)) //取端⼝P的B位输⼊值#define _IO_IF(P,B) (CBIT(P##_CR1,B)) //输⼊⼝悬空#define _IO_IR(P,B) (SBIT(P##_CR1,B)) //输⼊⼝上拉电阻#define _IO_OC(P,B) (CBIT(P##_CR1,B)) //输出⼝开漏#define _IO_OP(P,B) (SBIT(P##_CR1,B)) //输出⼝推挽输出#define _IO_IE(P,B) (SBIT(P##_CR2,B)) //输⼊⼝中断允许#define _IO_ID(P,B) (CBIT(P##_CR2,B)) //输⼊⼝中断禁⽌#define _IO_CH(P,B) (SBIT(P##_CR2,B)) //输出⼝⾼速输出#define _IO_CL(P,B) (CBIT(P##_CR2,B)) //输出⼝低速输出//============================================================================== //==============================================================================#define E_IWDG IWDG_KR=0XCC //看门狗允许#define R_IWDG(x) IWDG_KR=0X55;IWDG_RLR=x;IWDG_KR=0XAA //看门狗装载值#define D_IWDG(x) IWDG_KR=0X55;IWDG_PR=x;IWDG_KR=0XAA //看门狗时钟分频值//==============================================================================#define END_AD GBIT(ADC_CSR,7) //AD转换结束标志位#define CH0_AD ADC_CSR&=0Xf0 //AD0通道#define CH1_AD ADC_CSR&=0Xf0;ADC_CSR|=0x01 //AD1通道#define CH2_AD ADC_CSR&=0Xf0;ADC_CSR|=0x02 //AD2通道#define CH3_AD ADC_CSR&=0Xf0;ADC_CSR|=0x03 //AD3通道#define CH4_AD ADC_CSR&=0Xf0;ADC_CSR|=0x04 //AD4通道#define CH5_AD ADC_CSR&=0Xf0;ADC_CSR|=0x05 //AD5通道#define CH6_AD ADC_CSR&=0Xf0;ADC_CSR|=0x06 //AD6通道#define CH7_AD ADC_CSR&=0Xf0;ADC_CSR|=0x07 //AD7通道#define CH8_AD ADC_CSR&=0Xf0;ADC_CSR|=0x08 //AD8通道#define CH9_AD ADC_CSR&=0Xf0;ADC_CSR|=0x09 //AD9通道#define CH10_AD ADC_CSR&=0Xf0;ADC_CSR|=0x0a //AD10通道#define CH11_AD ADC_CSR&=0Xf0;ADC_CSR|=0x0b //AD11通道#define CH12_AD ADC_CSR&=0Xf0;ADC_CSR|=0x0c //AD12通道#define CH13_AD ADC_CSR&=0Xf0;ADC_CSR|=0x0d //AD13通道#define CH14_AD ADC_CSR&=0Xf0;ADC_CSR|=0x0e //AD14通道#define CH15_AD ADC_CSR&=0Xf0;ADC_CSR|=0x0f //AD15通道#define ON_AD SBIT(ADC_CR1,0) //打开AD电源#define OFF_AD CBIT(ADC_CR1,0) //关闭AD#define STR_AD SBIT(ADC_CR1,0) //开始AD转换//============================================================================== #define DENB_WREEPROM GBIT(FLASH_IAPSR,3) //允许写EE标志位数据#define DIS_WREEPROM CBIT(FLASH_IAPSR,3) //EE写保护#define DEND_WREEPROM GBIT(FLASH_IAPSR,2) //写EE完成标志位数据//============================================================================== #define TIM1_IEN SBIT(TIM1_IER,0) //定时器1中断开#define TIM1_IDIS CBIT(TIM1_IER,0) //定时器1中断关#define TIM1_INT GBIT(TIM1_IER,0) //定时器1中断状态//============================================================================== #define BEEP_ENB BEEP_CSR|=0x20#define BEEP_DIS BEEP_CSR&=(~0x20)#define G_BEEP (BEEP_CSR&0X20)//============================================================================== #define SPI_ENB SPI_CR1|=0x40#define SPI_DIS SPI_CR1&=(~0x40)#endif。

ST单片机STM8S开发入门教程

ST单片机STM8S开发入门教程

ST单片机STM8S开发入门教程最近ST在国内大力推广他的8位高性价比单片机STM8S系列,感觉性能上还是非常不错的,网上稍微看了点资料,打算有机会还是学习一下,先入门为以后做好技术积累。

好了,长话短说。

手上拿到一套ST最近做活动赠送的三合一学习套件,上面包括STM32F小板、ST LINK小板、STM8S小板,做工很精致,相信很多朋友也收到了。

既然当初去申请了,人家也送了,总得把用起来吧,放着吃灰尘是很可惜的^_^ 。

好,步入正题,刚开始在论坛上逛了一圈,感觉STM8S的资料实在太少,都是官方的应用资料,没有什么入门介绍,连需要安装什么软件都搞不清楚。

偶的电脑光驱坏了,所以也读不出光盘里有什么东西,所以只能到处瞎摸,还是ourdev论坛好,嘿嘿,仔细看了几个帖子,总算明白大概是什么样的开发环境了。

用C语言开发STM8S,需要安装两个软件:1、STVD IDE开发环境;2、COSMIC for STM8 C编译器。

STVD可以到官网下载,下载地址:COSMIC 需要申请LICENSE,比较繁琐,刚好坛子有人传了一个免安装无限制版本的,偶就赶紧下载了,大家可以去下载,仅做为个人学习使用。

下载地址:软件下载后,只需安装STVD。

从上面地址下载的COSMIC不用安装,只要解压到硬盘即可。

后面建立工程的时候设置好路径即可。

下面一步一步开始啦~一、安装好STVD后,桌面上建立了两个快捷图标,ST Visual Develop就是STVD了。

ST Visual Programmer是编程软件,可以配合ST LINK对STM8S进行编程烧录。

二、双击运行ST Visual Develop,启动STVD开发环境。

执行Workspace,在New Workspace 窗口里选择Create workspace and projects,点击“确定”建立工作组和工程三、在Workspace 里输入Workspace名称,由于最终我们要测试一个现成的LED程序,所以偶写了led,随你喜欢了,呵呵。

STM8S和STM32选型手册(中文版)

STM8S和STM32选型手册(中文版)

4(16/16/16) 1(4/4/6) 2 3 2 3+2 OTG 2
2
2/(16) 1(2) 51 LQFP64
STM32F105RB 72 128K 32K
4(16/16/16) 1(4/4/6) 2 3 2 3+2 OTG 2
2
2/(16) 1(2) 51 LQFP64
64脚 STM32F107RB 72 128K 48K
stm8s103f2164k1k640stm8s103f3168k1k640stm8s103k3168k1k640stm8s903k3168k1k640stm8s105k41616k2k1024stm8s105k61632k2k1024stm8s105s41616k2k1024stm8s105s61632k2k1024stm8s105c41616k2k102410stm8s105c61632k2k10241032脚stm8s207k62432k2k1024stm8s207s62432k2k102444脚stm8s207s82464k4k1536stm8s207sb24128k4k1536stm8s207c62432k2k10241048脚stm8s207c82464k4k153610stm8s207cb24128k6k204810stm8s207r62432k2k10241664脚stm8s207r82464k4k153616stm8s207rb24128k6k204816stm8s207m82464k6k204816stm8s207mb24128k6k204816stm8s208s62432k4k153644脚stm8s208s82464k4k1536stm8s208sb24128k4k1536stm8s208c62432k6k20481048脚stm8s208c82464k6k204810stm8s208cb24128k6k204810stm8s208r62432k6k20481664脚stm8s208r82464k6k204816stm8s208rb24128k6k20481680脚stm8s208mb24128k6k20481637型号16位定时器捕获比较通道封装stm8s8位微控制器产品列表截至2009年8月flash字节cpu最大频率mhzram字节eeprom字节adc通道10位定时器普通高级21612tssop20ufqfpn203x31612tssop20ufqfpn203x32821lqfp327x7vfqfpn325x52821lqfp327x7vfqfpn325x52512lqfp327x7vqfpn325x5sdip322512lqfp327x7vqfpn325x5sdip323415lqfp4410x103415lqfp4410x103816lqfp487x73816lqfp487x7

STM8S硬件电路设计注意事项

STM8S硬件电路设计注意事项
亚太领先电子通路,16 年专业品质
(西南办:028-8626 9815 015208108068)
STM8S 可以不需要晶振跟复位电路,但是为了最小系统能够稳定运行,所以最好增加 外部电路。 注意事项
(1)VCAP 电容引脚(STM8S103PX 是第 8 个管脚): STM8S 的 VCAP 管脚上的电容是一 个很特别的电容。它是 STM8S 的内核的工作电压。需要在外 部加一个外部的电容,以保 证内核工作电压的稳定。一般推荐 1uF 的瓷片电容。而且 1uF 的瓷片电容在进行 PCB 布线 时,必须要尽可能地靠近 VCAP 引脚,一直靠近到不 能再靠近为止。这一点非常非常重要, 切记!切记!(STM8L 系列上没有此电容)
(西南办:028-8626 9815 015208108068) 2、STM8 复位电路设计
STM8 单片机内置上电复位(POR),所以,STM8 单片机可以不设外部上电复位电路, 依然可以正常复位,稳定工作。 若是系统需要设置按键复位电路,那么注意,STM8 单片 机是低电平复位,如下图,设计按键复位电路:
只有一对。 注意:建议将VDD/VSS引脚旁的VDD_IO/VSS_IO与其连接到一起并且只使用一个退耦 电容。目的是减少VDD/VDD_IO 与电容的引线长度,以达到良好的噪声性能。 一对VDDA/VSSA (3.3 V ± 0.3 V to 5 V ± 0.5 V),专为模拟部分供电
亚太领先电子通路,16 年专业品质
பைடு நூலகம்
最小系统设计:建立一个STM8 最小系统必须要有以下几部分:
电源 复位电路 时钟 仿真与调试接口:SWIM(Single wire interface module,单线接口模块)连接 1、电源 芯片需要外部提供3.0V 到5.0V 的稳定电源。芯片内部的电源管理系统在正常工作和低 功耗模式下为内核提供1.8V 的参考电源。芯片能够监测外部(3V/5V)和内部(1.8V)电源掉 电。 芯片提供: 一对VDD/VSS 引脚(3.3 V ± 0.3 V to 5 V ± 0.5 V),连接到内部稳压参考电源 两对VDD_IO/VSS_IO (3.3 V ± 0.3 V to 5 V ± 0.5 V) ,专为I/O 供电。在32脚封装上,

STM8003F3串口通信程序

STM8003F3串口通信程序

头文件:Uart.h#ifndef _UART_H_#define _UART_H_#include"DataType.h"void Uart1_Init(u16 SYS_Clk, u32 baud);void Uart1_SendData(u8 data);void Uart1_IOConfig(void);extern u8 RecData;extern u8 flag;#endif源文件:Uart.c#include"iostm8s.h"#include"Uart.h"u8 RecData;u8 i=0;u8 flag;void Uart1_Init(u16 SYS_Clk, u32 baud){u16 UART_Temp=0;Uart1_IOConfig();USART1_CR2 = 0;// 禁止UART发送和接收USART1_CR1 = 0x00; //8bitUSART1_CR3 = 0x00; //1 stop bit// USART1_BRR2 = 0x0D;// USART1_BRR1 = 0x00; //9600 baud rate/************************************************** 设置波特率,必须注意以下几点:(1) 必须先写BRR2(2) BRR1存放的是分频系数的第11位到第4位,(3) BRR2存放的是分频系数的第15位到第12位,和第3位到第0位例如对于波特率位9600时,分频系数=2000000/9600=208对应的十六进制数为00D0,BBR1=0D,BBR2=00*************************************************/ UART_Temp = SYS_Clk*1000000/baud;USART1_BRR2 = (u8)((UART_Temp&0x000F)|((UART_Temp&0xF000)>>8));USART1_BRR1 = (u8)((UART_Temp&0x0FF0)>>4);USART1_CR2 = 0x2C; // b3 = 1,允许发送// b2 = 1,允许接收// b5 = 1,允许产生接收中断}@far @interrupt void USART1_RX_IRQHandler (void){u8 RxBuffer;RxBuffer = USART1_DR; //Store the received byte in RxBuffer//Uart1_SendData(Rec_whole[w]);RecData=RxBuffer&0x0ff;return;}void Uart1_SendData(u8 data){while((USART1_SR & 0x80) == 0x00); // 若发送寄存器不空,则等待USART1_DR = data; // 将要发送的字符送到数据寄存器}void Uart1_IOConfig(void){PD_DDR |= (1<<5);//输出模式 TXDPD_CR1 |= (1<<5);//推挽输出PD_DDR &=~(1<<6);//输入模式 RXDPD_CR1 &=~(1<<6);//浮空输入}。

STM8S903K3方案说明书

STM8S903K3方案说明书

程序总流程关系统总中断AD中断函数(64US)↓↓初始化端口换向检测和处理↓↓初始化时钟 4个通道的电流读取并且清标志位↓↓初始化UART1 加载PWM占空比↓↓初始化ADC 退出中断↓初始化TIMERE1↓打开系统总中断↓延时100MS↓读取转把电压↓读取角度切换端口,切换角度↓判断转把状态↓读取峰值,均值电流的基准,并判断是否超出↓MOS管检测↓从EEROM中读取锁电机方向标志位,和电流和欠压修改值↓While(1)主循环IO初始化PA1 :TB 锁电机内部上拉,外部要加105的下拉电阻PA2:TA 助力,标准的输入配置PA3:TXD或PA3 输出口PB0:输入,峰值电流通道PB1:输入,均值电流通道PB2:输入,电池电压通道PB3:输入,转把电压检测通道PB4:输入,标准的输入端口DC和PB4PB5:输入,标准的输入端口CR 巡航PB6:输入或者输出,外部无上拉电阻,有滤波电容PB7:输入或者输出,外部无上拉电阻,有滤波电容PC1:C下PC2:A下PC3:A上PC4:输入或者输出,外部无上拉电阻,有滤波电容,凌祥没有使用到此引脚PC5:刹车,内部上拉PC6:C上PC7:B上PE5 : B下PD0:刹车中断输入PD1:输出端口,和烧程序的SWIMPD2:输入端口霍尔SAPD3:输入端口霍尔SBPD4:输入端口霍尔SCPD5:输入端口SL,内部上拉PD6:输入端口ABS 内部上拉,外部加105下拉电阻PD7:输出,LED故障指示1 时钟STM8S903//RC输出,不分频。

16Mhz HSIDIV[1:0]:CLK_CKDIVR =0x00;//打开低速内部振荡器,高速内部RCCLK_ICKR =(1<<3)+(1<<0);ADC1:时钟8MHZ,单次扫描模式2:外部触发,右对齐模式3:扫描4个通道,这个地方有疑问4:64US中断一次,但是比刹车中断的优先级低,刹车可以打断AD转换中断TIMER1TIM1_ARR寄存器由预装载缓冲器缓冲,PWM的周期中央对齐模式2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Timers
Features
Core 16 MHz advanced STM8 core with Harvard architecture and 3-stage pipeline Extended instruction set Program memory: 8 Kbytes Flash; data retention 20 years at 55 °C after 100 cycles RAM: 1 Kbytes Data memory: 128 bytes of true data EEPROM; endurance up to 100 000 write/erase cycles 2.95 to 5.5 V operating voltage Flexible clock control, 4 master clock sources: Low power crystal resonator oscillator External clock input Internal, user-trimmable 16 MHz RC Internal low power 128 kHz RC Clock security system with clock monitor Power management: Low power modes (wait, active-halt, halt) Switch-off peripheral clocks individually Permanently active, low consumption poweron and power-down reset
6.2.1 6.2.2 I/O port hardware register map ........................................................ 30 General hardware register map........................................................ 31 DocID018576 Rev 4
5.2.1 5.2.2 5.2.3 STM8S003F3 TSSOP20 pinout and pin description ........................ 24 STM8S003F3 UFQFPN20 pinout ..................................................... 25 STM8S003F3 TSSOP20/UFQFPN20 pin description ...................... 26

December 2014
DocID018576 Rev 4
1/95

This is informauction.
Contents
STM8S003K3 STM8S003F3
Contents
1 2 3 4 Introduction ..................................................................................... 8 Description....................................................................................... 9 Block diagram................................................................................ 10 Product overview .......................................................................... 11
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 Central processing unit STM8 ......................................................... 11 Single wire interface module (SWIM) and debug module (DM) ...... 12 Interrupt controller ........................................................................... 12 Flash program memory and data EEPROM .................................... 12 Clock controller ............................................................................... 14 Power management ........................................................................ 15 Watchdog timers ............................................................................. 15 Auto wakeup counter ...................................................................... 16 Beeper ............................................................................................ 16 TIM1 - 16-bit advanced control timer............................................... 16 TIM2 - 16-bit general purpose timer ................................................ 16 TIM4 - 8-bit basic timer ................................................................... 17 Analog-to-digital converter (ADC1) ................................................. 17 Communication interfaces ............................................................... 17
5.3
Alternate function remapping .......................................................... 28 Memory map ................................................................................... 29 Register map ................................................................................... 30
4.14.1 4.14.2 4.14.3 UART1 .............................................................................................. 18 SPI .................................................................................................... 18 I²C ..................................................................................................... 18
STM8S003K3 STM8S003F3
Value line, 16 MHz STM8S 8-bit MCU, 8 Kbytes Flash, 128 bytes data EEPROM, 10-bit ADC, 3 timers, UART, SPI, I²C
Datasheet - production data
5
Pinout and pin description ........................................................... 20
5.1 5.2 STM8S003K3 LQFP32 pinout and pin description .......................... 21 STM8S003F3 TSSOP20/UFQFPN20 pinout and pin description.... 24
Communications interfaces I/Os
Memories
Analog to digital converter (ADC)
Clock, reset and supply management

Development support
Embedded single wire interface module (SWIM) for fast on-chip programming and non intrusive debugging
相关文档
最新文档