网上买的STM8L152板子到手,来点程序(IO,EEP,LCD)
LCD部分:#include "periph_lcd.h"
lcd_code_item_t LCD_CODE_TAB[]=
{
={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=1,.COM2_L=0,.COM2_H=1,.COM3_L=1,.COM3_H=1,},
={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=0,.COM2_H=1,.COM3_L=0,.COM3_H=0,},
={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=0,.COM2_L=1,.COM2_H=1,.COM3_L=0,.COM3_H=1,},
={.COM0_L=1,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=0,.COM3_H=1,},
={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=1,.COM3_H=0,},
={.COM0_L=1,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=0,.COM3_L=1,.COM3_H=1,},
={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=1,.COM2_L=1,.COM2_H=0,.COM3_L=1,.COM3_H=1,},
={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=0,.COM2_H=1,.COM3_L=0,.COM3_H=1,},
={.COM0_L=1,.COM0_H=0,.COM1_L=1,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=1,.COM3_H=1,},
={.COM0_L=1,.COM0_H=0,.COM1_L=0,.COM1_H=1,.COM2_L=1,.COM2_H=1,.COM3_L=1,.COM3_H=1,},
={.COM0_L=0,.COM0_H=0,.COM1_L=0,.COM1_H=0,.COM2_L=0,.COM2_H=0,.COM3_L=0,.COM3_H=0,},
};
void LCD_Open(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_LCD,ENABLE);
CLK_RTCClockConfig(CLK_RTCCLKSource_HSI,CLK_RTCCLKDiv_64);
LCD_Init(LCD_Prescaler_8 ,LCD_Divider_18,LCD_Duty_1_4,LCD_Bias_1_3,LCD_VoltageSource_External);
LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xff);
LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x03);
LCD_ContrastConfig(LCD_Contrast_3V0);
LCD_DeadTimeConfig(LCD_DeadTime_0);
LCD_PulseOnDurationConfig(LCD_PulseOnDuration_7);
LCD_Cmd(ENABLE);
}
void LCD_DispCharOnIndex(uint8 ch, uint8 index)
{
if(index>=LCD_INDEX_MAX_COUNT)
{
return ;
}
uint8 lcd_code=LCD_CODE_TAB.Byte;
if(lcd_code & BIT_MAST_COM0_L)
{
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2);
}
if(lcd_code & BIT_MAST_COM0_H)
{
bit_arry_set_bit((void *)LCD->RAM,28*0+index*2+1);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*0+index*2+1);
}
if(lcd_code & BIT_MAST_COM1_L)
{
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2);
}
if(lcd_code & BIT_MAST_COM1_H)
{
bit_arry_set_bit((void *)LCD->RAM,28*1+index*2+1);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*1+index*2+1);
}
if(lcd_code & BIT_MAST_COM2_L)
{
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2);
}
if(lcd_code & BIT_MAST_COM2_H)
{
bit_arry_set_bit((void *)LCD->RAM,28*2+index*2+1);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*2+index*2+1);
}
if(lcd_code & BIT_MAST_COM3_L)
{
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2);
}
if(lcd_code & BIT_MAST_COM3_H)
{
bit_arry_set_bit((void *)LCD->RAM,28*3+index*2+1);
}
else
{
bit_arry_clr_bit((void *)LCD->RAM,28*3+index*2+1);
}
}
void LCD_DispOffOnIndex(uint8 index)
{
LCD_DispCharOnIndex(LCD_CHAR_OFF,index);
}
void LCD_DispOffOnAllIndex(void)
{
for(uint8 i=0;i