CH554T設(shè)置為24M時(shí)鐘,串口要更改設(shè)置?

void mInitSTDIO( )

{

? ? UINT32 x;

? ? UINT8 x2;?


? ? SM0 = 0;? ? //該位為0選擇8位數(shù)據(jù)異步通信

? ? SM1 = 1;? ? //該位為1設(shè)置可變波特率,由定時(shí)器T1或者T2產(chǎn)生

? ? //SM0=0, SM1=1 模式1,8位異步通信方式,波特率可變,由定時(shí)器T1或者T2產(chǎn)生

? ? SM2 = 0;? ? //串口0使用模式1;在模式1時(shí),如果SM2=1,那么只有接收到有效的停止位時(shí),接收才有效

? ??

? ? //使用Timer1作為波特率發(fā)生器

? ? RCLK = 0;? ?//UART0接收時(shí)鐘,該位為0選擇Timer1溢出脈沖產(chǎn)生波特率

? ? TCLK = 0;? ?//UART0發(fā)送時(shí)鐘,該位為0選擇Timer1溢出脈沖產(chǎn)生波特率

? ? PCON |= SMOD;//SMOD=0慢速模式, SMOD=1快速模式

? ? x = 10 * FREQ_SYS / UART0_BUAD / 16;? ? //如果更改主頻,注意x的值不要溢出? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? x2 = x % 10;

? ? x /= 10;

? ? if ( x2 >= 5 ) x ++;? ? //四舍五入


? ? TMOD = TMOD & ~ bT1_GATE & ~ bT1_CT & ~ MASK_T1_MOD | bT1_M1;? ?//0X20,Timer1作為8位自動(dòng)重載定時(shí)器

? ? T2MOD = T2MOD | bTMR_CLK | bT1_CLK; //Timer1時(shí)鐘選擇

? ? TH1 = 0-x;? //12MHz晶振,buad/12為實(shí)際需設(shè)置波特率

? ? TR1 = 1;? ? //啟動(dòng)定時(shí)器1

? ? TI = 1;

? ? REN = 1;? ? //串口0接收使能

}


請(qǐng)問在系統(tǒng)時(shí)鐘設(shè)為24M時(shí),這里的串口配置程序需要修改??x = 10 * FREQ_SYS / UART0_BUAD / 16;? ? //如果更改主頻,注意x的值不要溢出 TH1 = 0-x;? //12MHz晶振,buad/12為實(shí)際需設(shè)置波特率 這兩句怎么理解?如果產(chǎn)品工作環(huán)境溫差大的話,這個(gè)串口的誤差率在允許范圍內(nèi)?


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

x的值不要溢出:在32位變量加上554能夠設(shè)置的主頻上限,這個(gè)32位變量是不會(huì)超出的。

關(guān)于TH1,其實(shí)我們只要關(guān)注波特率計(jì)算公式就行了:

image.png


謝謝,綜合考慮還是用12M的時(shí)鐘了


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频