STM8S103 PWM实例(国外英文资料).doc
文本预览下载声明
STM8S103 PWM实例(国外英文资料)
# include“routine.h”
#定义PS_IO PD_IDR_IDR6
#定义x4000 EEP_ADDRESS_USE_FLAG 0
#定义x4010 EEP_ADDRESS_FRE1 0
#定义x4012 EEP_ADDRESS_WIDTH1 0
#定义x4020 EEP_ADDRESS_FRE2 0
#定义x4022 EEP_ADDRESS_WIDTH2 0
定义beep_on()PA_ODR_ODR3 = 0
定义beep_off()PA_ODR_ODR3 = 1
beep_s sBeep;
#定义BeepType sBeep.chars[0]
无符号字符Time30ms;
unsigned int FrePeriod;
unsigned int PluseW;
无符号字符HeadStata;
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
unsigned int get_dead_time(void)/ /死区时间
{
unsigned int死了;
如果(TIM1_DTR 0 x80)
{
死= TIM1_DTR;
}
else if(TIM1_DTR 0 xc0)
{
死亡=(64 +(TIM1_DTR 0x3f))* 2;
}
else if(TIM1_DTR 0 xe0)
{
死亡=(32 +(TIM1_DTR 0x1f))* 8;
}
其他的
{
死亡=(32 +(TIM1_DTR 0x1f))* 16;
}
返回死了;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
未签名的char get_dead_reg(未签名的int死亡)
{
无符号字符注册;
如果(死 = 512)
{
reg = dead / 16 - 32 + 0xe0;
}
else if(死 = 256)
{
reg = dead / 8 - 32 + 0xc0;
}
else if(死 = 128)
{
reg = dead / 2 - 64 + 0x80;/ / 0x97
}
其他的
{
reg = dead;/ / 0
}
返回注册;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
未签名的int eeprom_read_word(未签名的int地址)
{
unsigned int Dat;
(无符号char *)( dat)= *(无符号字符*)地址;
*((unsigned char *)(dat)+ 1)= *(unsigned char *)(地址+ 1);
返回Dat;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void eeprom_write_word(未签名的int地址,未签名的int数据)
{
FLASH_DUKR = 0机加区;/ /第2硬件密匙。
asm(NOP);
FLASH_DUKR = 0 x56;/ /数据eepm解保护寄存器第1硬件密匙。
asm(NOP);
而(! FLASH_IAPSR_DUL)asm(NOP);/ /硬件置位,解锁标志0写保护使能1写保护通过质量解除。
*(unsigned char *)地址=数据 8;
而(! FLASH_IAPSR_EOP)asm(NOP);/ /判断bgi的事件发生,
FLASH_IAPSR_EOP = 0;/ /软件清0
*(unsigned char *)(地址+ 1)=数据;/ /送数据到地址
而(! FLASH_IAPSR_EOP)asm(NOP);
FLASH_IAPSR_EOP = 0;/ /写或擦出,没有bgi的事件发生,有发生,如IE为1将有中断产生。
FLASH_IAPSR_DUL = 0;/ / 0数据eepm区域写保护使能.1DATA eepm区域写保护使能使用质量密匙解除。
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
显示全部