STC8H3K64S2 TSSOP20, 4800bps通讯问题
STC8H3K64S2TSSOP20在9600波特率下通讯都是正常的,但是在4800和2400通讯出现异常,4800时断时续,2400直接通讯不起来建议先使用官方例程,只修改主频跟波特率,烧录到芯片里跟电脑通信测试。
串口配置也可以使用STC-ISP软件生成代码:
波特率降低通信速度变慢,正常会更稳定。可用低主频,或者作为波特率发生器的定时器使用12分频。 STC8H3K64S2top20和STC8H3K64S4-48PIN串口配置一样的话,有没有问题?目前STC8H3K64S4-48PIN这个单片机正常通讯4800和2400都没有问题 范特西物联网 发表于 2023-11-29 16:20
STC8H3K64S2top20和STC8H3K64S4-48PIN串口配置一样的话,有没有问题?目前STC8H3K64S4-48PIN这个单片 ...
你描述下你的时钟,串口,波特率发生器 TIM_InitTypeDef TIM_InitStructure; //结构定义
TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; //指定工作模式, TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T; //指定时钟源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
TIM_InitStructure.TIM_ClkOut = ENABLE; //是否输出高速脉冲, ENABLE或DISABLE
TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / (1000*12)); //初值,
TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后启动定时器, ENABLE或DISABLE
Timer_Inilize(Timer0,&TIM_InitStructure); //初始化Timer0 Timer0,Timer1,Timer2,Timer3,Timer4
NVIC_Timer0_Init(ENABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3 COMx_InitDefine COMx_InitStructure; //结构定义
COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
COMx_InitStructure.UART_BRT_Use = BRT_Timer1; //使用波特率, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
//COMx_InitStructure.UART_BaudRate= 115200ul; //波特率, 一般 110 ~ 115200
switch(EEPROM_Data.REG_Data_Keep.reg_4001_Band)
{
case 1://1200
COMx_InitStructure.UART_BaudRate= 1200ul; //波特率, 一般 110 ~ 115200
break;
case 2://2400
COMx_InitStructure.UART_BaudRate= 2400ul; //波特率, 一般 110 ~ 115200
break;
case 3://4800
COMx_InitStructure.UART_BaudRate= 4800ul; //波特率, 一般 110 ~ 115200
break;
case 4://9600
COMx_InitStructure.UART_BaudRate= 9600ul; //波特率, 一般 110 ~ 115200
break;
case 5://19200
COMx_InitStructure.UART_BaudRate= 19200ul; //波特率, 一般 110 ~ 115200
break;
case 6://38400
COMx_InitStructure.UART_BaudRate= 38400ul; //波特率, 一般 110 ~ 115200
break;
case 7://57600
COMx_InitStructure.UART_BaudRate= 57600ul; //波特率, 一般 110 ~ 115200
break;
case 8://115200
COMx_InitStructure.UART_BaudRate= 115200ul; //波特率, 一般 110 ~ 115200
break;
default://9600 错误与默认为9600
COMx_InitStructure.UART_BaudRate= 9600; //波特率, 一般 110 ~ 115200
break;
}
// COMx_InitStructure.UART_BaudRate= 115200;
COMx_InitStructure.UART_RxEnable= ENABLE; //接收允许, ENABLE或DISABLE
COMx_InitStructure.BaudRateDouble = DISABLE; //波特率加倍, ENABLE或DISABLE
UART_Configuration(UART1, &COMx_InitStructure); //初始化串口1 UART1,UART2,UART3,UART4
NVIC_UART1_Init(ENABLE,Priority_3); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit 您这边给看看配置有没有问题,9600波特率及以上都没有问题,4800及以下就出问题 关于串口通讯这方面的帖子有点少啊
页:
[1]