STM8S103KITV1.0

合集下载

STM8S103 看门狗应用

STM8S103 看门狗应用
int main(void)
{uchar i;
IO_config();//端口初始化
LED=0;IWDG_KR=0xCC;//当IWDG_KR被写入数值0xCC,独立看门狗被
启动了
IWDG_KR =0x55; //解除PR及RLR的写保护
IWDG_RLR=0xff;/数
为256,最长超时时间为:1.02S
IWDG_KR =0xAA; //恢复PR及RLR的写保护状态
for(i=0;iIWDG_KR=0xAA;//刷新IWDG(喂狗)。每当KEY_REFRESH的
数值(0xAA)写入到IWDG_KR寄存器时,//独立看门狗将用IWDG_RLR的数
值刷新计数器的内容,从而避免了产生看门狗的复位。}
#include
#defineuintunsignedint#defineucharunsignedchar#defineLED
PC_ODR_ODR5 //输出LED控制口
voiddelayms(unsignedintcount);//延时程序voidIO_config(void);//端口配置
/***************延时子程序start****************/voiddelayms(unsignedint
count){unsigned int i,j;for(i=0;ivoid IO_config(void){CLK_CKDIVR =0x08;//内部
8MPC_DDR=0x20;//PC5为输出,其它全为输入PC_CR1=0xFF;//设置PC5
推挽输出,其它输入IO端口上拉使能PC_CR2 = 0x00;}
LED=1;while(1); //如果没有喂狗,就复位
}

STM8S103中文资料

STM8S103中文资料

10 电气特性 .................................................................................................................32
10.1 参数条件............................................................................................................................32 10.1.1 最小和最大值 .............................................................................................................32 10.1.2 典型数值 ....................................................................................................................32 10.1.3 典型曲线 ....................................................................................................................32 10.1.4 负载电容 ....................................................................................................................32 10.1.5 引脚输入电压 .............................................................................................................32

STM8S系列单片机原理与应用复习.doc

STM8S系列单片机原理与应用复习.doc

STM8S系列单片机原理与应用复习第1章基础知识1.1计算机的基本认识(11)地址总线,寻址范围,STM8寻址2陀16MB y (2)数据总线,字长,STM8为8位单片机J3)控制总线Q)时钟周期Y(2)机器周期:完成一个基本动作的时间。

1(3)指令周期:一条指令所需的时间。

STM8S: 一个机器周期仅包含一个时钟周期。

1. 1. 1计算机系统的工作过程及其内部结构ALU:算术运算和逻辑运算存储器:ROM, RAM1.1.2指令、指令系统及程序指令:操作码+操作数STM8:属CISC1?2寻址方式确定指令中操作数所在存储单元地址的方式,就称为寻址方式。

2.4 了解单片机特点及其发展趋势第2章STM8S系列MCU芯片内部结构P21STM8S103, STM8S105, STM8S207, STM8S208STM8S103(EEPR0M 64kB), STM8S003(EEPROM 128kB), ID2. 1 STM8S系列MCU性能概述16M地址空间,I/O引脚输入/输出可编程选择,内置HSI各LSI。

内核:高级STM8内核,具有3级流水线的哈佛结构扩展指令集存储器@中等密度程序和数据存储器:@ —最多32K字节Flash; 10K次擦写⑥55° C环境下数据可保存20年◎—数据存储器:多达1K字节真正的数据EEPROM;可达塑万次擦写@ RAM:多达2K字节时钟、复位和电源管理⑥3.L5.5V工作电压,内核电压 1.8V, Vcap⑥灵活的时钟控制,4个主时钟源⑥-低功率晶体振荡器⑥-外部时钟输入⑥-用户可调整的内部16MHz RC令-内部低功耗128kHz RC⑥带有时钟监控的时钟安全保障系统电源管理:⑥-低功耗模式(等待.活跃停机、停机)@ -外设的时钟可单独关闭⑥ 永远打开的低功耗上电和掉电复位中断管理⑥带有32个中断的嵌套中断控制器⑥6个外部中断向量,最多37个外部中断定时器2个16位通用定时器,带有2+3个CAPCOM通道(IC、0C或PWM)@高级控制定时器:16位,4个CAPCOM◎通道,3个互补输出,死区插入和灵活的自动唤醒定时器2个看门狗定时器:窗口看门狗和独立看门狗通信接口⑥带有同步时钟输出的UART ,智能卡,红外IrDA, LIN接口<$> SPI 接口最高到8Mb i t/s⑥12C接口最高到400Kb i t/s2. 2 STM8S系列MCU内部结构P222. 2. 1 STM8 内核CPU P24PC 为24位,可寻址224=1 6Mb累加器(A),堆栈指针(SP),索引寄存器(X 和Y), 条件码寄存器(CC):令V: Overflow H: Half-carry令 N: NegativeZ: Zero令C: Carry? IO, 11: interruptmasklevel 0, 12.2.2 STM8S 封装与引脚排列2.3掌握通用I/O 口GPIO 初始化P31?可选择的输出模式:推挽式输出和开漏输出PB_DDR, PB_CR1,PB_CR22. 3. 1 2.3.2 2.3.3 2.3.4I/O 引脚结构I/O 端口数据寄存器与控制寄存器输入模式输出模式每一个端口都有一个输出数据寄存器(ODR), 一个引脚输入寄存器(IDR)和一个数据方向寄存器(DDR)总是同相关的。

STM8S固件库使用手册al

STM8S固件库使用手册al

STM8S固件库使用手册alSTM8S固件库用户手册STM8S系列8位微控制器固件函数库version 1.1.0北京微芯力科 & 沈阳微扬电机整理INDEXSTM8S_FWLIB version V1.1.0stm8s_Adc1 __________ 1 stm8s_Beep __________ 7 stm8s_Clk __________ 8 stm8s_exti __________ 14 stm8s_flash __________ 16 stm8s_gpio __________ 20 stm8s_iwdg __________ 23 stm8s_tim1 __________ 24 stm8s_tim2 __________ 40 stm8s_tim4 __________ 50 stm8s_can __________*************************************************************** ************************** file stm8s_adc1. version V1.1.0 *************************************************************** ************************** ***************************** STM8S FWLIB *************************************** ADC1_DeInit(void);ADC1_Init( ADC1_ConvMode_TypeDef ADC1_ConversionMode,ADC1_Channel_TypeDef ADC1_Channel,ADC1_PresSel_TypeDef ADC1_PrescalerSelection,ADC1_ExtTrig_TypeDef ADC1_ExtTrigger,FunctionalState ADC1_ExtTriggerState,ADC1_Align_TypeDef ADC1_Align,ADC1_SchmittTrigg_TypeDef ADC1_SchmittTriggerChannel, FunctionalState ADC1_SchmittTriggerState);ADC1_Cmd(FunctionalState NewState);ADC1_ScanModeCmd(FunctionalState NewState);ADC1_DataBufferCmd(FunctionalState NewState);ADC1_ITConfig(ADC1_IT_TypeDef ADC1_IT, FunctionalState NewState);ADC1_PrescalerConfig(ADC1_PresSel_TypeDefADC1_Prescaler);ADC1_SchmittTriggerChannel,ADC1_SchmittTriggerConfig( ADC1_SchmittTrigg_TypeDefFunctionalState NewState);ADC1_ConversionConfig( ADC1_ConvMode_TypeDef ADC1_ConversionMode,ADC1_Channel_TypeDef ADC1_Channel,ADC1_Align_TypeDef ADC1_Align);ADC1_ExternalTriggerConfig(ADC1_ExtTrig_TypeDefADC1_ExtTrigger, FunctionalState NewState); ADC1_AWDChannelConfig(ADC1_Channel_TypeDef Channel, FunctionalState NewState);ADC1_StartConversion(void);ADC1_GetConversionValue(void);ADC1_SetHighThreshold(u16 Threshold);ADC1_SetLowThreshold(u16 Threshold);ADC1_GetBufferValue(u8 Buffer);ADC1_GetAWDChannelStatus(ADC1_Channel_TypeDef Channel);ADC1_ClearFlag(ADC1_Flag_TypeDef Flag);ADC1_GetITStatus(ADC1_IT_TypeDef ITPendingBit);ADC1_ClearITPendingBit(ADC1_IT_TypeDef ITPendingBit);*************************************************************** ***************************************************************************************** ************************** ADC1_DeInit(void);*************************************************************** ************************** ADC1_Init( ADC1_ConvMode_TypeDef ADC1_ConversionMode,ADC1_Channel_TypeDef ADC1_Channel,ADC1_PresSel_TypeDef ADC1_PrescalerSelection,ADC1_ExtTrig_TypeDef ADC1_ExtTrigger,FunctionalState ADC1_ExtTriggerState,ADC1_Align_TypeDef ADC1_Align,ADC1_SchmittTrigg_TypeDef ADC1_SchmittTriggerChannel, FunctionalState ADC1_SchmittTriggerState); ———————————————————————————————————————————— INPUT ://ADC1 conversion mode selectionADC1_CONVERSIONMODE_SINGLEADC1_CONVERSIONMODE_CONTINUOUS//ADC1 analog channel selectionADC1_CHANNEL_0. . . . . .ADC1_CHANNEL_9//ADC1 clock prescaler selectionADC1_PRESSEL_FCPU_D2D3, D4, D6, D8, D10, D12ADC1_PRESSEL_FCPU_D18//ADC1 External conversion trigger event selection ADC1_EXTTRIG_TIMADC1_EXTTRIG_GPIO//FunctionalState ADC1_ExtTriggerStateADC1_EXTTRIG_TIM = (u8)0x00,ADC1_EXTTRIG_GPIO = (u8)0x10,//ADC1 data alignmentADC1_ALIGN_LEFTADC1_ALIGN_RIGHT//ADC1 schmitt TriggerADC1_SCHMITTTRIG_CHANNEL0. . . . . .ADC1_SCHMITTTRIG_CHANNEL9ADC1_SCHMITTTRIG_ALL//FunctionalState ADC1_SchmittTriggerState ADC1_SCHMITTTRIG_CHANNEL1 = (u8)0x01, ADC1_SCHMITTTRIG_CHANNEL2 = (u8)0x02, ADC1_SCHMITTTRIG_CHANNEL3 = (u8)0x03, ADC1_SCHMITTTRIG_CHANNEL4 = (u8)0x04, ADC1_SCHMITTTRIG_CHANNEL5 = (u8)0x05, ADC1_SCHMITTTRIG_CHANNEL6 = (u8)0x06, ADC1_SCHMITTTRIG_CHANNEL7 = (u8)0x07, ADC1_SCHMITTTRIG_CHANNEL8 = (u8)0x08, ADC1_SCHMITTTRIG_CHANNEL9 = (u8)0x09,(u8)0xFFADC1_SCHMITTTRIG_ALL =*************************************************************** ************************** ADC1_Cmd(FunctionalState NewState); ———————————————————————————————————————————— INPUT : DISABLE ; ENABLE *************************************************************** ************************** ADC1_ScanModeCmd(FunctionalState NewState);————————————————————————————————————————————INPUT : DISABLE ; ENABLE*************************************************************** ************************** ADC1_DataBufferCmd(FunctionalState NewState);————————————————————————————————————————————INPUT : DISABLE ; ENABLE*************************************************************** ************************** ADC1_ITConfig(ADC1_IT_TypeDef ADC1_IT, FunctionalState NewState); ———————————————————————————————————————————— INPUT ://ADC1 Interrupt sourceADC1_IT_AWDIE = (u16)0x10, /**< Analog WDG interrupt enable */ADC1_IT_EOCIE = (u16)0x20, /**< EOC iterrupt enable */ADC1_IT_AWD = (u16)0x140, /**< Analog WDG status */ADC1_IT_AWS0 = (u16)0x110, /**< Analog channel 0 status */ADC1_IT_AWS1 = (u16)0x111, /**< Analog channel 1 status */ADC1_IT_AWS2 = (u16)0x112, /**< Analog channel 2 status */ADC1_IT_AWS3 = (u16)0x113, /**< Analog channel 3 status */ADC1_IT_AWS4 = (u16)0x114, /**< Analog channel 4 status */ADC1_IT_AWS5 = (u16)0x115, /**< Analog channel 5 status */ADC1_IT_AWS6 = (u16)0x116, /**< Analog channel 6 status */ADC1_IT_AWS7 = (u16)0x117, /**< Analog channel 7 status */ADC1_IT_AWS8 = (u16)0x118, /**< Analog channel 8 status */ADC1_IT_AWS9 = (u16)0x119, /**< Analog channel 9 status */ADC1_IT_EOC = (u16)0x80 /**< EOC pending bit */FunctionalState NewState : DISABLE ; ENABLE*************************************************************** **************************ADC1_PrescalerConfig(ADC1_PresSel_TypeDef ADC1_Prescaler); ————————————————————————————————————————————INPUT : //ADC1 clock prescaler selectionADC1_PRESSEL_FCPU_D2 = (u8)0x00, /**< Prescaler selection fADC1 = fcpu/2 */ADC1_PRESSEL_FCPU_D3 = (u8)0x10, /**< Prescaler selection fADC1 = fcpu/3 */ADC1_PRESSEL_FCPU_D4 = (u8)0x20, /**< Prescaler selection fADC1 = fcpu/4 */ADC1_PRESSEL_FCPU_D6 = (u8)0x30, /**< Prescaler selection fADC1 = fcpu/6 */ADC1_PRESSEL_FCPU_D8 = (u8)0x40, /**< Prescaler selection fADC1 = fcpu/8 */ADC1_PRESSEL_FCPU_D10 = (u8)0x50, /**< Prescaler selection fADC1 = fcpu/10 */ADC1_PRESSEL_FCPU_D12 = (u8)0x60, /**< Prescaler selection fADC1 = fcpu/12 */ADC1_PRESSEL_FCPU_D18 = (u8)0x70 /**< Prescaler selection fADC1 = fcpu/18 */*************************************************************** **************************ADC1_SchmittTriggerConfig( ADC1_SchmittTrigg_TypeDef ADC1_SchmittTriggerChannel,FunctionalState NewState); ———————————————————————————————————————————— INPUT: //ADC1 schmitt TriggerADC1_SCHMITTTRIG_CHANNEL0 = (u8)0x00, /**< Schmitt trigger disable on AIN0 */ADC1_SCHMITTTRIG_CHANNEL1 = (u8)0x01, /**< Schmitt trigger disable on AIN1 */ADC1_SCHMITTTRIG_CHANNEL2 = (u8)0x02, /**< Schmitt trigger disable on AIN2 */ADC1_SCHMITTTRIG_CHANNEL3 = (u8)0x03, /**< Schmitt trigger disable on AIN3 */ADC1_SCHMITTTRIG_CHANNEL4 = (u8)0x04, /**< Schmitt trigger disable on AIN4 */ADC1_SCHMITTTRIG_CHANNEL5 = (u8)0x05, /**< Schmitt trigger disable on AIN5 */ADC1_SCHMITTTRIG_CHANNEL6 = (u8)0x06, /**< Schmitt trigger disable on AIN6 */ADC1_SCHMITTTRIG_CHANNEL7 = (u8)0x07, /**< Schmitttrigger disable on AIN7 */ADC1_SCHMITTTRIG_CHANNEL8 = (u8)0x08, /**< Schmitt trigger disable on AIN8 */ADC1_SCHMITTTRIG_CHANNEL9 = (u8)0x09, /**< Schmitt trigger disable on AIN9 */(u8)0xFFADC1_SCHMITTTRIG_ALL =/**< Schmitt trigger disable on All channels */ FunctionalState NewState : DISABLE ; ENABLE*************************************************************** **************************ADC1_ConversionConfig( ADC1_ConvMode_TypeDef ADC1_ConversionMode,ADC1_Channel_TypeDef ADC1_Channel,ADC1_Align_TypeDef ADC1_Align ); ———————————————————————————————————————————— INPUT: SEE:ADC1_Init ( )*************************************************************** **************************ADC1_ExternalTriggerConfig(ADC1_ExtTrig_TypeDefADC1_ExtTri gger, FunctionalState NewState); ———————————————————————————————————————————— INPUT: SEE:ADC1_Init ( )FunctionalState NewState : DISABLE ; ENABLE*************************************************************** **************************ADC1_AWDChannelConfig(ADC1_Channel_TypeDef Channel, FunctionalState NewState); ————————————————————————————————————————————INPUT: SEE:ADC1_Init( ) -> ADC1_Channel_TypeDefADC1_ChannelFunctionalState NewState : DISABLE ; ENABLE*************************************************************** ************************** ADC1_StartConversion(void);*************************************************************** ************************** ADC1_GetConversionValue(void); ————————————————————————————————————————————Return : (u16) ConversionValueADC1_GetConversionValue( );Examples: ADC1ConversionValue=*************************************************************** ************************** ADC1_SetHighThreshold(u16 Threshold); // Sets the high threshold of the analog watchdog ———————————————————————————————————————————— INPUT : u16 DATA *************************************************************** ************************** ADC1_SetLowThreshold(u16 Threshold); // Sets the high threshold of the analog watchdog ———————————————————————————————————————————— INPUT : u16 DATA *************************************************************** ************************** ADC1_GetBufferValue(u8 Buffer); //Read ADC1ConversionValue from the DATA buffer ———————————————————————————————————————————— INPUT : (u8) Buffer ValueADC1ConversionValueReturn : (u16)*************************************************************** **************************ADC1_GetAWDChannelStatus(ADC1_Channel_TypeDef Channel);// Checks the specified analog watchdog channel status ————————————————————————————————————————————INPUT : (u8) ADC1_Channel_TypeDef Channel 0 ~ 9Return : (u8) ((FlagStatus)status) 0 or 1*************************************************************** **************************ADC1_GetFlagStatus(ADC1_Flag_TypeDef Flag);//Checks the specified ADC1 flag status : REG ADC3_CR3_DBUF ————————————————————————————————————————————INPUT : //ADC1 flag.ADC1_FLAG_OVR = (u8)0x41, /**< Overrun status flag */ADC1_FLAG_AWD = (u8)0x40, /**< Analog WDG status */ADC1_FLAG_AWS0 = (u8)0x10, /**< Analog channel 0 status */ADC1_FLAG_AWS1 = (u8)0x11, /**< Analog channel 1 status */ADC1_FLAG_AWS2 = (u8)0x12, /**< Analog channel 2 status */ADC1_FLAG_AWS3 = (u8)0x13, /**< Analog channel 3 status */ADC1_FLAG_AWS4 = (u8)0x14, /**< Analog channel 4 status */ADC1_FLAG_AWS5 = (u8)0x15, /**< Analog channel 5 status */ADC1_FLAG_AWS6 = (u8)0x16, /**< Analog channel 6 status */ADC1_FLAG_AWS7 = (u8)0x17, /**< Analog channel 7 status*/ADC1_FLAG_AWS8 = (u8)0x18, /**< Analog channel 8 status*/ADC1_FLAG_AWS9 = (u8)0x19, /**< Analog channel 9 status */ADC1_FLAG_EOC = (u8)0x80 /**< EOC falg */Return :0 or 1 //FlagStatus Status of the ADC1 flag.*************************************************************** ************************** ADC1_ClearFlag(ADC1_Flag_TypeDef Flag); // Clear the specified ADC1 Flag. ———————————————————————————————————————————— INPUT : //ADC1 flag. SEE ADC1_GetFlagStatus( );*************************************************************** ************************** ADC1_GetITStatus(ADC1_IT_TypeDef ITPendingBit); // Returns the specified pending bit status INPUT : // ITPendingBit : the IT pending bit to check.ADC1_IT_AWDIE = (u16)0x10, /**< Analog WDG interrupt enable */ADC1_IT_EOCIE = (u16)0x20, /**< EOC iterrupt enable */ADC1_IT_AWD = (u16)0x140, /**< Analog WDG status */ADC1_IT_AWS0 = (u16)0x110, /**< Analog channel 0 status */ADC1_IT_AWS1 = (u16)0x111, /**< Analog channel 1 status */ADC1_IT_AWS2 = (u16)0x112,/**< Analog channel 2 status */ADC1_IT_AWS3 = (u16)0x113, /**< Analog channel 3 status */ADC1_IT_AWS4 = (u16)0x114, /**< Analog channel 4 status */ADC1_IT_AWS5 = (u16)0x115, /**< Analog channel 5 status */ADC1_IT_AWS6 = (u16)0x116, /**< Analog channel 6 status */ADC1_IT_AWS7 = (u16)0x117, /**< Analog channel 7 status */ADC1_IT_AWS8 = (u16)0x118, /**< Analog channel 8 status */ADC1_IT_AWS9 = (u16)0x119, /**< Analog channel 9 status */ADC1_IT_EOC = (u16)0x80 /**< EOC pending bit */Return :0 or 1 // status of the specified pending bit.*************************************************************** **************************ADC1_ClearITPendingBit(ADC1_IT_TypeDef ITPendingBit); ———————————————————————————————————————————— INPUT : S EE ADC1_GetITStatus( );***************************** STM8S FWLIB ****************************************************************************************************** ************************** BEEP_DeInit(void);BEEP_Init(BEEP_Frequency_TypeDef BEEP_Frequency);BEEP_Cmd(FunctionalState NewState);BEEP_LSICalibrationConfig(u32 LSIFreqHz);*************************************************************** ***************************************************************************************** ************************** BEEP_DeInit(void); // Deinitializes the BEEP peripheral registers to their default reset***************************************************************************************** BEEP_Init(BEEP_Frequency_TypeDef BEEP_Frequency);// Initializes the BEEP function according to the specified parameters. ————————————————————————————————————————————INPUT : // BEEP_Frequency Frequency selection.BEEP_FREQUENCY_1KHZ = (u8)0x00, /*!< Beep signal output frequency equals to 1 KHz */BEEP_FREQUENCY_2KHZ = (u8)0x40, /*!< Beep signal output frequency equals to 2 KHz */BEEP_FREQUENCY_4KHZ = (u8)0x80 /*!< Beep signal output frequency equals to 4 KHz */*************************************************************** ************************** BEEP_Cmd(FunctionalState NewState); ———————————————————————————————————————————— INPUT : DISABLE ; ENABLE *************************************************************** ************************** BEEP_LSICalibrationConfig(u32 LSIFreqHz);// Update CSR register with the measured LSI frequency. ———————————————————————————————————————————— INPUT : u32 LSIFreqHz ***************************** STM8S FWLIB ****************************************************************************************************** **************************CLK_DeInit (void);CLK_HSECmd (FunctionalState NewState);CLK_HSICmd (FunctionalState NewState);CLK_LSICmd (FunctionalState NewState);CLK_CCOCmd (FunctionalState NewState);CLK_ClockSwitchCmd (FunctionalState NewState);CLK_FastHaltWakeUpCmd (FunctionalState NewState);CLK_SlowActiveHaltWakeUpCmd (FunctionalState NewState);CLK_PeripheralClockConfig (CLK_Peripheral_TypeDef CLK_Peripheral, FunctionalState NewState);CLK_Source_TypeDef CLK_ClockSwitchConfig (CLK_SwitchMode_TypeDefCLK_SwitchMode,CLK_NewClock,ITState,FunctionalStateCLK_CurrentClockState_TypeDef CLK_CurrentClockState);CLK_HSIPrescalerConfig (CLK_Prescaler_TypeDef HSIPrescaler);CLK_CCOConfig (CLK_Output_TypeDef CLK_CCO);CLK_ITConfig (CLK_IT_TypeDef CLK_IT, FunctionalState NewState);CLK_SYSCLKConfig (CLK_Prescaler_TypeDef CLK_Prescaler);CLK_SWIMConfig (CLK_SWIMDivider_TypeDef CLK_SWIMDivider);CLK_CANConfig (CLK_CANDivider_TypeDef CLK_CANDivider);CLK_ClockSecuritySystemEnable (void);CLK_SYSCLKEmergencyClear (void);CLK_AdjustHSICalibrationValue (CLK_HSITrimValue_TypeDef CLK_HSICalibrationValue);CLK_GetClockFreq (void);CLK_GetSYSCLKSource (void);CLK_GetFlagStatus (CLK_Flag_TypeDef CLK_FLAG);CLK_GetITStatus (CLK_IT_TypeDef CLK_IT);CLK_ClearITPendingBit (CLK_IT_TypeDef CLK_IT);*************************************************************** ***************************************************************************************** ************************** CLK_DeInit (void);*************************************************************** ************************** CLK_HSECmd (FunctionalState NewState); ————————————————————————————————————————————INPUT : DISABLE ; ENABLE*************************************************************** ************************** CLK_HSICmd (FunctionalState NewState); ————————————————————————————————————————————INPUT : DISABLE ; ENABLE*************************************************************** ************************** CLK_LSICmd (FunctionalState NewState); ————————————————————————————————————————————INPUT : DISABLE ; ENABLE*************************************************************** ************************** CLK_CCOCmd (FunctionalState NewState); // Enables or disablle the Configurable Clock Output ———————————————————————————————————————————— INPUT : DISABLE ; ENABLE *************************************************************** ************************** CLK_ClockSwitchCmd (FunctionalState NewState); // Starts or Stops manually clock switch execution ———————————————————————————————————————————— INPUT : DISABLE ; ENABLE *************************************************************** ************************** CLK_FastHaltWakeUpCmd (FunctionalState NewState); ————————————————————————————————————————————INPUT : DISABLE ; ENABLE*************************************************************** ************************** CLK_SlowActiveHaltWakeUpCmd (FunctionalState NewState); //Configures the slow active halt wake up ———————————————————————————————————————————— INPUT : DISABLE ; ENABLE*************************************************************** ************************** CLK_PeripheralClockConfig ( C LK_Peripheral_TypeDef CLK_Peripheral,FunctionalState NewState); ———————————————————————————————————————————— INPUT : // CLK Enable peripheralCLK_PERIPHERAL_I2C = (u8)0x00, /*!< Peripheral Clock Enable 1, I2C */CLK_PERIPHERAL_SPI = (u8)0x01, /*!< Peripheral Clock Enable 1, SPI */CLK_PERIPHERAL_UART1 = (u8)0x02, /*!< Peripheral Clock Enable 1, UART1 */CLK_PERIPHERAL_UART2 = (u8)0x03, /*!< Peripheral Clock Enable 1, UART2 */CLK_PERIPHERAL_UART3 = (u8)0x03, /*!< Peripheral Clock Enable 1, UART3 */CLK_PERIPHERAL_TIMER6 = (u8)0x04, /*!< Peripheral Clock Enable 1, Timer6 */CLK_PERIPHERAL_TIMER4 = (u8)0x04, /*!< Peripheral Clock Enable 1, Timer4 */CLK_PERIPHERAL_TIMER5 = (u8)0x05, /*!< Peripheral Clock Enable 1, Timer5 */CLK_PERIPHERAL_TIMER2 = (u8)0x05, /*!< Peripheral Clock Enable 1, Timer2 */CLK_PERIPHERAL_TIMER3 = (u8)0x06, /*!< Peripheral Clock Enable 1, Timer3 */CLK_PERIPHERAL_TIMER1 = (u8)0x07, /*!< Peripheral Clock Enable 1, Timer1 */CLK_PERIPHERAL_ADC = (u8)0x13, /*!< Peripheral Clock Enable 2, ADC */CLK_PERIPHERAL_CAN = (u8)0x17 /*!< Peripheral Clock Enable 2, CAN */FunctionalState NewState : DISABLE ; ENABLE*************************************************************** ************************** CLK_ClockSwitchConfig ( CLK_SwitchMode_TypeDef CLK_SwitchMode,CLK_Source_TypeDef CLK_NewClock,ITState,FunctionalStateCLK_CurrentClockState_TypeDef CLK_CurrentClockState ); ———————————————————————————————————————————— INPUT ://Switch Mode Auto, Manual.CLK_SWITCHMODE_MANUAL = (u8)0x00, /*!< Enable the manual clock switching mode */CLK_SWITCHMODE_AUTO = (u8)0x01 /*!< Enable the automatic clock switching mode *///CLK Clock Source.CLK_SOURCE_HSI = (u8)0xE1, /*!< Clock Source HSI. */CLK_SOURCE_LSI = (u8)0xD2, /*!< Clock Source LSI. */CLK_SOURCE_HSE = (u8)0xB4 /*!< Clock Source HSE. *///FunctionalState ITStateDISABLE ; ENABLE//CLK_CurrentClockState_TypeDefCLK_CURRENTCLOCKSTATE_DISABLE = (u8)0x00, /*!< Current clock disable */CLK_CURRENTCLOCKSTATE_ENABLE = (u8)0x01 /*!< Current clock enable */Return : SUCCESS or ERROR;*************************************************************** ************************** CLK_HSIPrescalerConfig (CLK_Prescaler_TypeDef HSIPrescaler); ———————————————————————————————————————————— INPUT : //CLK Clock Divisor.CLK_PRESCALER_HSIDIV1 = (u8)0x00, /*!< High speed internal clock prescaler: 1 */CLK_PRESCALER_HSIDIV2 = (u8)0x08, /*!< High speed internal clock prescaler: 2 */CLK_PRESCALER_HSIDIV4 = (u8)0x10, /*!< High speed internal clock prescaler: 4 */CLK_PRESCALER_HSIDIV8 = (u8)0x18, /*!< High speed internal clock prescaler: 8 */CLK_PRESCALER_CPUDIV1 = (u8)0x80, /*!< CPU clock division factors 1 */CLK_PRESCALER_CPUDIV2 = (u8)0x81, /*!< CPU clock division factors 2 */CLK_PRESCALER_CPUDIV4 = (u8)0x82, /*!< CPU clock division factors 4 */CLK_PRESCALER_CPUDIV8 = (u8)0x83, /*!< CPU clock division factors 8 */CLK_PRESCALER_CPUDIV16 = (u8)0x84, /*!< CPU clock division factors 16 */CLK_PRESCALER_CPUDIV32 = (u8)0x85, /*!< CPU clock division factors 32 */CLK_PRESCALER_CPUDIV64 = (u8)0x86, /*!< CPU clock division factors 64 */CLK_PRESCALER_CPUDIV128 = (u8)0x87 /*!< CPU clock division factors 128 */*************************************************************** ************************** CLK_CCOConfig (CLK_Output_TypeDef CLK_CCO); ————————————————————————————————————————————INPUT : //CLK Clock OutputCLK_OUTPUT_HSI = (u8)0x00, /*!< Clock Output HSI */CLK_OUTPUT_LSI = (u8)0x02, /*!< Clock Output LSI */CLK_OUTPUT_HSE = (u8)0x04, /*!< Clock Output HSE */CLK_OUTPUT_CPUDIV2 = (u8)0x0A, /*!< Clock Output CPU/2 */CLK_OUTPUT_CPUDIV4 = (u8)0x0C, /*!< Clock Output CPU/4 */CLK_OUTPUT_CPUDIV8 = (u8)0x0E, /*!< Clock Output CPU/8 */CLK_OUTPUT_CPUDIV16 = (u8)0x10, /*!< Clock Output CPU/16 */CLK_OUTPUT_CPUDIV32 = (u8)0x12, /*!< Clock Output CPU/32 */CLK_OUTPUT_CPUDIV64 = (u8)0x14, /*!< Clock Output CPU/64 */CLK_OUTPUT_HSIRC = (u8)0x16, /*!< Clock Output HSI RC */ CLK_OUTPUT_MASTER = (u8)0x18, /*!< Clock Output Master */CLK_OUTPUT_OTHERS = (u8)0x1A /*!< Clock Output OTHER */*************************************************************** ************************** CLK_ITConfig (CLK_IT_TypeDef CLK_IT, FunctionalState NewState); ————————————————————————————————————————————INPUT : //CLK interrupt configuration and Flags cleared by software.CLK_IT_CSSD = (u8)0x0C, /*!< Clock security system detection Flag */CLK_IT_SWIF = (u8)0x1C /*!< Clock switch interrupt Flag */ *************************************************************** ************************** CLK_SYSCLKConfig (CLK_Prescaler_TypeDef CLK_Prescaler); ———————————————————————————————————————————— INPUT : //CLK Clock Divisor.CLK_PRESCALER_HSIDIV1 = (u8)0x00, /*!< High speed internal clock prescaler: 1 */CLK_PRESCALER_HSIDIV2 = (u8)0x08, /*!< High speed internal clock prescaler: 2 */CLK_PRESCALER_HSIDIV4 = (u8)0x10, /*!< High speed internal clock prescaler: 4 */CLK_PRESCALER_HSIDIV8 = (u8)0x18, /*!< High speed internal clock prescaler: 8 */CLK_PRESCALER_CPUDIV1 = (u8)0x80, /*!< CPU clock division factors 1 */CLK_PRESCALER_CPUDIV2 = (u8)0x81, /*!< CPU clockdivision factors 2 */CLK_PRESCALER_CPUDIV4 = (u8)0x82, /*!< CPU clock division factors 4 */CLK_PRESCALER_CPUDIV8 = (u8)0x83, /*!< CPU clock division factors 8 */CLK_PRESCALER_CPUDIV16 = (u8)0x84, /*!< CPU clock division factors 16 */CLK_PRESCALER_CPUDIV32 = (u8)0x85, /*!< CPU clock division factors 32 */CLK_PRESCALER_CPUDIV64 = (u8)0x86, /*!< CPU clock division factors 64 */CLK_PRESCALER_CPUDIV128 = (u8)0x87 /*!< CPU clock division factors 128 **************************************************************** ************************** CLK_SWIMConfig (CLK_SWIMDivider_TypeDef CLK_SWIMDivider); ———————————————————————————————————————————— INPUT : //SWIM Clock divider.CLK_SWIMDIVIDER_2 = (u8)0x00, /*!< SWIM clock is divided by 2 */CLK_SWIMDIVIDER_OTHER = (u8)0x01 /*!< SWIM clock is not divided by 2 */*************************************************************** ************************** CLK_CANConfig (CLK_CANDivider_TypeDef CLK_CANDivider); ———————————————————————————————————————————— INPUT : //External CAN clock dividern.CLK_CANDIVIDER_1 = (u8)0x00, /*!< External CAN clock = HSE/1 */CLK_CANDIVIDER_2 = (u8)0x01, /*!< External CAN clock =HSE/2 */CLK_CANDIVIDER_3 = (u8)0x02, /*!< External CAN clock = HSE/3 */CLK_CANDIVIDER_4 = (u8)0x03, /*!< External CAN clock = HSE/4 */CLK_CANDIVIDER_5 = (u8)0x04, /*!< External CAN clock = HSE/5 */CLK_CANDIVIDER_7 = (u8)0x06, /*!< External CAN clock = HSE/7 */CLK_CANDIVIDER_8 = (u8)0x07 /*!< External CAN clock = HSE/8 */*************************************************************** ************************** CLK_ClockSecuritySystemEnable (void); // Enables the Clock Security System.*************************************************************** ************************** CLK_SYSCLKEmergencyClear (void); // Reset the SWBSY flag (SWICR Reister)*************************************************************** ************************** CLK_AdjustHSICalibrationValue (CLK_HSITrimValue_TypeDef CLK_HSICalibrationValue); ———————————————————————————————————————————— INPUT : //CLK HSI Calibration Value.CLK_HSITRIMV ALUE_0 = (u8)0x00, /*!< HSI Calibtation Value 0 */CLK_HSITRIMV ALUE_1 = (u8)0x01, /*!< HSI Calibtation Value 1 */CLK_HSITRIMV ALUE_2 = (u8)0x02, /*!< HSI Calibtation Value 2 */CLK_HSITRIMV ALUE_3 = (u8)0x03, /*!< HSI Calibtation Value 3 */CLK_HSITRIMV ALUE_4 = (u8)0x04, /*!< HSI Calibtation Value 4 */CLK_HSITRIMV ALUE_5 = (u8)0x05, /*!< HSI Calibtation Value 5 */CLK_HSITRIMV ALUE_6 = (u8)0x06, /*!< HSI Calibtation Value 6 */CLK_HSITRIMV ALUE_7 = (u8)0x07 /*!< HSI Calibtation Value 7 */*************************************************************** ************************** CLK_GetClockFreq (void); //eturns the frequencies of different on chip clocks. ———————————————————————————————————————————— Return : ((u32)clockfrequency)Examples :(u32)clockfrequency = CLK_GetClockFreq ();*************************************************************** ************************** CLK_GetSYSCLKSource (void); ———————————————————————————————————————————— Return : // Returns the clock source used as system clock.(u8)0xE1, /*!< Clock Source HSI. */(u8)0xD2, /*!< Clock Source LSI. */(u8)0xB4 /*!< Clock Source HSE. */*************************************************************** ************************** CLK_GetFlagStatus (CLK_Flag_TypeDef CLK_FLAG);// Checks whether the specified CLK flag is set or not. ———————————————————————————————————————————— INPUT : // CLK_FLAG Flag to check.CLK_FLAG_LSIRDY = (u16)0x0110, /*!< Low speed internal oscillator ready Flag */CLK_FLAG_HSIRDY = (u16)0x0102, /*!< High speed internal oscillator ready Flag */CLK_FLAG_HSERDY = (u16)0x0202, /*!< High speed external oscillator ready Flag */CLK_FLAG_SWIF = (u16)0x0308, /*!< Clock switch interrupt Flag */CLK_FLAG_SWBSY = (u16)0x0301, /*!< Switch busy Flag */ CLK_FLAG_CSSD = (u16)0x0408, /*!< Clock security system detection Flag */CLK_FLAG_AUX = (u16)0x0402, /*!< Auxiliary oscillator connected to master clock */CLK_FLAG_CCOBSY = (u16)0x0504, /*!< Configurable clock output busy */CLK_FLAG_CCORDY = (u16)0x0502 /*!< Configurable clock output ready */Return : RESET or SET //FlagStatus, status of the checked flag *************************************************************** **************************CLK_GetITStatus (CLK_IT_TypeDef CLK_IT); ———————————————————————————————————————————— INPUT : // CLK_IT specifies the CLK interrupt.CLK_IT_CSSD = (u8)0x0C, /*!< Clock security system detection Flag */CLK_IT_SWIF = (u8)0x1C /*!< Clock switch interrupt Flag */ Return : RESET or SET: //ITStatus, new state of CLK_IT (SET or RESET).*************************************************************** ************************** CLK_ClearITPendingBit (CLK_IT_TypeDef CLK_IT); ————————————————————————————————————————————。

小菲教你STM8单片机基础入门

小菲教你STM8单片机基础入门
STM8S主要特点:
速度达20 MIPS的高性能内核 抗干扰能力强,品质安全可靠 领先的130纳米制造工艺,优异的性价比 程序空间从4K到128K, 芯片选择从20脚到80脚,宽范围产品系列 系统成本低,内嵌EEPROM和高精度RC振荡器 开发容易,拥有本地化工具支持
STM8S主要应用:
STM8L主要特点:
STM8 16 MHz CPU 内置 4-32 KB 闪存,多达 2KB SRAM 三个系列:跨系列的引脚对引脚兼容、软件相互兼容、外设相互兼容 电源电压:1.8 V-3.6 V (断电时,最低 1.65 V) 超低功耗模式:保持 SRAM 内容时,最低功耗 350nA 运行模式动态功耗低至 150μA/MHz 最先进的数字和模拟外设接口 工作温度范围:-40°C 到+85 °C,可高达 125 °C 免费的触感固件库
王志杰 Email: iewangzhijie@ QQ:411238869
1 STM8 微控制器简介
-7-
1.3 STM8A 系列
意法半导体公司推出的 STM8A 是一款专门用于满足汽车应用的特殊需求的 8-位 Flash 微控制器。这些模块化产品提供了真数据 EEPROM 以及软件和引脚兼容性,适用的程序存 储器尺寸范围为 8KB 至 256KB 和 20 至 128-引脚封装。所有器件的工作电压均为 3V 至 5V, 并且其工作温度扩展到了 145°C。
监控、紧急求助
王志杰 Email: iewangzhijie@ QQ:411238869
1 STM8 微控制器简介
-4-
STM8S 产品分为“Access Line(入门级)”和“Peroformance Line(增强型)”,如 下图所示。
王志杰 Email: iewangzhijie@ QQ:411238869

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。

STM8简介

STM8简介
无ADC、DAC、RTC、HSE
STM8L151/152
❖ STM8L151/152是STM8L超低功耗系列的增强型产品。与STM8L101相比 ,这些MCU的性能更高,功能更多。
❖ 它们基于16 MHz专用STM8内核,具有高达64KB Flash程序存储器、4KB SRAM和多至2KB的数据EEPROM,采用20~80引脚封装。可以选择12位 ADC和DAC、LCD控制器和温度传感器之类的模拟特性。
STM8L系列
STM8L162
意法半导体的超低功耗产品线,支持多种对功耗极为 敏感的应用,例如便携式设备。STM8L基于8位STM8 内核,与STM32L系列一样采用了专有超低漏电流工艺, 利用最低功耗模式实现了超低功耗(0.30 uA)
STM8L151/152 变

STM8L101 增


STM8L051/052 入
所有STM8S超值系列微控制器的产品制造流程、封装和测试技术均得到了优 化,与现有的STM8S系列产品完成兼容,并且具有相同的IP、主要参数性能和 相同的开发工具。STM8S超值系列利用了STM8专有内核的性能优势。
STM8S103/105
STM8S103/105基本型属于标准多功能8位微控制器。作为低成本超值型 产品升级的第一步,STM8S103/105基本型提供了更多的封装、存储容量、特 性和工厂编程服务选项。
STM8S003/005/007 超值系列
STM8S超值系列提供了所有8位微控制器中的最佳性价比。 很多消费类和大批量工业电子器件均需要基本的MCU功能和极具竞争力的价
格。与现有的低成本MCU相比,STM8S超值型的成本更低,并且还能够以很低 的价格实现接近于STM8S基本型和增强型的出色性能。

STM8S103 PWM实例

STM8S103 PWM实例
= 0x10;
PB_CR2 = 0x00;
PC_DDR = 0x00;
PC_CR1 = 0x10;
PC_CR2 = 0x00;
PD_DDR = 0x00;
PD_CR1 = 0x60;
PD_CR2 = 0x00;
CLK_SWCR_SWEN = 1; // 时钟切换寄存器,0禁止1使能
* 函数名称:
* 功 能:
* 说 明:
* 入口参数:
* 返回值:
* 作 者: X.Y.Xiao 时间: ×年×月×日
* 修 改: 时间:
******************************************************************************/
return Dat;
}
//-------------------------------------------------------
void eeprom_write_word(unsigned int address,unsigned int Data)
{
FLASH_DUKR = 0xae; // 第2硬件密匙。
TIM1_CNTRH = 0; // 计数器清0
TIM1_CNTRL = 0;
TIM1_PSCRH = 0; // 预分频器清0
TIM1_PSCRL = 0;
TIM1_ARRH = (unsigned char)(FrePeriod/256); //自动重装值高位
TIM1_ARRL = (unsigned char)FrePeriod; //自动重装值低位
#define EEP_ADDRESS_WIDTH2 0x4022
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档