STC8G1K17 用的是TSSOP20的芯片PCA功能,导致有异常情况
本帖最后由 ya123456 于 2024-8-1 08:01 编辑STC8G1K17 用的是TSSOP20的芯片PCA功能,导致有异常情况。使用的了PCA1 PCA2两个功能引脚,没有用到ECI功能引脚(用做不用的IO口),使用中不正常,无法使用P3.4普通IO口。如果把PCA功能删了,就能正常使用P3.4引脚。请问各位大侠有没有遇到这种情况。
初始化是这样,没有对P3.4的ECI功能初始化。
/******************** PCA IO口配置 ********************/
void PCA_GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //结构定义
GPIO_InitStructure.Pin= GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P3,&GPIO_InitStructure); //初始化
}
/******************** PCA配置 ********************/
void PCA_config(void)
{
PCA_InitTypeDef PCA_InitStructure;
PCA_InitStructure.PCA_Clock = PCA_Clock_1T; //PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECI
PCA_InitStructure.PCA_RUN = DISABLE; //ENABLE, DISABLE
PCA_Init(PCA_Counter,&PCA_InitStructure); //设置公用Counter
PCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit; //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bit, PCA_PWM_10bit
PCA_InitStructure.PCA_Value = 128 << 8; //对于PWM,高8位为PWM占空比
PCA_Init(PCA1,&PCA_InitStructure);
PCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit; //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bit, PCA_PWM_10bit
PCA_InitStructure.PCA_Value = 128 << 8; //对于PWM,高8位为PWM占空比
PCA_Init(PCA2,&PCA_InitStructure);
NVIC_PCA_Init(PCA_Counter,DISABLE,Priority_0);
NVIC_PCA_Init(PCA1,PCA_Mode_PWM,Priority_0); //PWM
NVIC_PCA_Init(PCA2,PCA_Mode_PWM,Priority_0); //PWM
PCA_SW(PCA_P34_P35_P36_P37); //PCA_P12_P11_P10_P37,PCA_P34_P35_P36_P37,PCA_P24_P25_P26_P27
CR = 1; //启动PCA
pwm2 = 128;
B_PWM0_Dir = 0;
B_PWM0_Dir = 0;UpdatePcaPwm(PCA1,pwm2);//对比度
B_PWM0_Dir = 0;UpdatePcaPwm(PCA2,pwm2); //背光
}
//================================================================================================
检查CPS2、CPS1、CPS0的设置 本帖最后由 ya123456 于 2024-8-1 08:14 编辑
DebugLab 发表于 2024-8-1 00:06
检查CPS2、CPS1、CPS0的设置
我的参考例程用的是STC8G-STC8H-LIB-DEMO-CODE-20240429版本中的“22-PCA0输出PWM-PAC1捕获-PAC2定时-STC8G”,PCA1 PCA2两个PWM模式引脚。
//==============================================================================================
/******************** PCA IO口配置 ********************/
void PCA_GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //结构定义
GPIO_InitStructure.Pin= GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P3,&GPIO_InitStructure); //初始化
}
以上我是这样用的,该如何改。谢谢
/******************** PCA配置 ********************/
void PCA_config(void)
{
PCA_InitTypeDef PCA_InitStructure;
PCA_InitStructure.PCA_Clock = PCA_Clock_1T; //PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECI
PCA_InitStructure.PCA_RUN = DISABLE; //ENABLE, DISABLE
PCA_Init(PCA_Counter,&PCA_InitStructure); //设置公用Counter
PCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit; //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bit, PCA_PWM_10bit
PCA_InitStructure.PCA_Value = 128 << 8; //对于PWM,高8位为PWM占空比
PCA_Init(PCA1,&PCA_InitStructure);
PCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit; //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bit, PCA_PWM_10bit
PCA_InitStructure.PCA_Value = 128 << 8; //对于PWM,高8位为PWM占空比
PCA_Init(PCA2,&PCA_InitStructure);
NVIC_PCA_Init(PCA_Counter,DISABLE,Priority_0);
NVIC_PCA_Init(PCA1,PCA_Mode_PWM,Priority_0); //PWM
NVIC_PCA_Init(PCA2,PCA_Mode_PWM,Priority_0); //PWM
PCA_SW(PCA_P34_P35_P36_P37); //PCA_P12_P11_P10_P37,PCA_P34_P35_P36_P37,PCA_P24_P25_P26_P27
CR = 1; //启动PCA
pwm2 = 128;
B_PWM0_Dir = 0;
B_PWM0_Dir = 0;UpdatePcaPwm(PCA1,pwm2);//对比度
B_PWM0_Dir = 0;UpdatePcaPwm(PCA2,pwm2); //背光
}
使用STC8G1K17(TSSOP20)芯片的PCA功能做PWM输出,没有使用ECI功能但是有异常
STC8G1K17 用的是TSSOP20的芯片PCA功能,有异常情况。使用的了PCA1(P3.6)、 PCA2(P3.7)两个功能引脚,没有用到ECI(P3.4)功能引脚(做普通的IO口使用),使用中不正常,无法使用P3.4普通IO口。如果把PCA功能删了,就能正常使用P3.4引脚。请问各位大侠有没有遇到这种情况。参考例程用的是STC8G-STC8H-LIB-DEMO-CODE-20240429版本中的“22-PCA0输出PWM-PAC1捕获-PAC2定时-STC8G”,PCA1 PCA2两个端口都使用PWM模式。
初始化是这样,没有对P3.4的ECI功能初始化。
/******************** PCA IO口配置 ********************/
void PCA_GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //结构定义
GPIO_InitStructure.Pin= GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P3,&GPIO_InitStructure); //初始化
}
/******************** PCA配置 ********************/
void PCA_config(void)
{
PCA_InitTypeDef PCA_InitStructure;
PCA_InitStructure.PCA_Clock = PCA_Clock_1T; //PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECI
PCA_InitStructure.PCA_RUN = DISABLE; //ENABLE, DISABLE
PCA_Init(PCA_Counter,&PCA_InitStructure); //设置公用Counter
PCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit; //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bit, PCA_PWM_10bit
PCA_InitStructure.PCA_Value = 128 << 8; //对于PWM,高8位为PWM占空比
PCA_Init(PCA1,&PCA_InitStructure);
PCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit; //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bit, PCA_PWM_10bit
PCA_InitStructure.PCA_Value = 128 << 8; //对于PWM,高8位为PWM占空比
PCA_Init(PCA2,&PCA_InitStructure);
NVIC_PCA_Init(PCA_Counter,DISABLE,Priority_0);
NVIC_PCA_Init(PCA1,PCA_Mode_PWM,Priority_0); //PWM
NVIC_PCA_Init(PCA2,PCA_Mode_PWM,Priority_0); //PWM
PCA_SW(PCA_P34_P35_P36_P37); //PCA_P12_P11_P10_P37,PCA_P34_P35_P36_P37,PCA_P24_P25_P26_P27
CR = 1; //启动PCA
pwm2 = 128;
B_PWM0_Dir = 0;
B_PWM0_Dir = 0;UpdatePcaPwm(PCA1,pwm2);//对比度
B_PWM0_Dir = 0;UpdatePcaPwm(PCA2,pwm2); //背光
}
//=====================================================================
P3.4的IO口模式设置了吗? 本帖最后由 ya123456 于 2024-8-2 07:59 编辑
乘风飞扬 发表于 2024-8-1 14:31
P3.4的IO口模式设置了吗?终于解决了,原来是IO定义有问题,PCA没有问题。
页:
[1]