- 打卡等级:初来乍到
- 打卡总天数:1
- 最近打卡:2024-11-18 10:01:25
已绑定手机
新手上路
- 积分
- 21
|
本帖最后由 DebugLab 于 2024-11-14 17:04 编辑
各位大老, 求解或問題所在
你好, 我有一個問題, 一直沒法解決
原本使用
Ai8g2k64s4 和 Ai8h8k64
和式一直很正常
最近改用 stc32g8k64
大部份問題都解決
但有個問題 uart2, 一直解決不了
我把程序簡化到最簡單
發現 uart2 正常
但只要一加上
TMOD=0x01;
uart2 就無法收法正常
#include "stc32g.h"
sbit RS_485_2 = P4^1;
//===============================================================
//GLOBAL VARIABLE
//===============================================================
bit bU0TX_2 = 0;
//------------------------------------------------------------------------
// UART2 22.1184 9600 USE TIME2 1T
//------------------------------------------------------------------------
void Uart2_Init(void) //9600bps@22.1184MHz
{
S2CON = 0x50; //8 bits and variable baudrate
AUXR |= 0x04; //imer clock is 1T mode
T2L = 0xC0; //Initial timer value
T2H = 0xFD; //Initial timer value
AUXR |= 0x10; //Timer2 start run
}
void UART2_Isr() interrupt 8
{
// UART2 TI
if (S2CON & 0x02)
{
S2CON &= ~0x02;
bU0TX_2 = 0;
}
// UART2 RI
if (S2CON & 0x01)
{
S2CON &= ~0x01;
}
}
void PutByte2(unsigned char n_temp0)
{
bU0TX_2 = 1;
S2BUF = n_temp0;
while(bU0TX_2)
{
;
}
}
void IO_init(void)
{
P0M0 = 0X00;P0M1 = 0X00;
P1M0 = 0X00;P1M1 = 0X00;
P2M0 = 0X00;P2M1 = 0X00;
P3M0 = 0X00;P3M1 = 0X00;
P4M0 = 0X00;P4M1 = 0X00;
P5M0 = 0X00;P5M1 = 0X00;
P6M0 = 0X00;P6M1 = 0X00;
P7M0 = 0X00;P7M1 = 0X00;
}
void main()
{
// STC32G8K64
WTST = 0; //設置程式指令延時參數,賦值為0可將CPU執行指令的速度設置為最快
EAXFR = 1; //擴展寄存器(XFR)訪問使能/
CKCON = 0; //提高訪問XRAM速度
IO_init();
Uart2_Init();
ES2=1;
// 只要加上行, 因為我有程序, 需要要到 TIME 的 模式一, 但一加上這行, UART2 收發就都不正常
// 我試了快2週, 還是解決不了
//-----------------------------
TMOD=0x10;
//-----------------------------
EA = 1;
RS_485_2=1;
PutByte2('2');
PutByte2('2');
PutByte2('2');
RS_485_2=0;
while(1)
{
}
}
|
|