打印

RELOAD_COUNT的值是怎么算出来的

[复制链接]
1636|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianli1980|  楼主 | 2013-10-13 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下代码,
#define RELOAD_COUNT  0xd9   //12.000MHz,12T,SMOD=0,9600bps
void serial_port_one_initial()
{
    SCON    =   0x50;   //0101,0000 8位可变波特率,无奇偶校验位
//   TMOD    =   0x21;   //0011,0001 设置顶时器1为8位自动重装计数器
//    TH1     =   RELOAD_COUNT;   //设置定时器1自动重装数
//    TL1     =   RELOAD_COUNT;
//    TR1     =   1;    //开定时器1
BRT = RELOAD_COUNT;
//  BRTR = 1, S1BRS = 1, EXTRAM = 1 ENABLE EXTRAM
//AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS
AUXR = 0x15; //For 12MHz OSC
    ES      =   1;    //允许串口中断
    EA      =   1;    //开总中断
}
RELOAD_COUNT的值是怎么算出来的
沙发
haibian826| | 2013-10-13 19:34 | 只看该作者
芯嵌stm32的入门呢教程,有解释。
http://www.51stm32.com/forum.php ... &extra=page%3D1
请看:芯嵌STM32入门系列教程之二十《STM32的定时器编程》1.pdf

使用特权

评论回复
板凳
tianli1980|  楼主 | 2013-10-13 19:49 | 只看该作者
真心感谢楼上为位朋友的回复,芯嵌stm32的教程还不错,准备再学习学习。

使用特权

评论回复
地板
拿起书本| | 2013-10-14 16:05 | 只看该作者
你看单片机的那个串口波特率的计算方法啊
串口波特率的时钟来源是TIMER1,TIMER1每触发一次就发送一位
9600BPS对应104.16667US,即需要TIMER1每104.166667US触发一次
12MHZ,12分频下,TIMER1的一次计数耗时1US,所以TIMER1需要计数104(0X68)次,然后初始值就是(0x100-0x68=0X98)

使用特权

评论回复
5
chuangpu| | 2013-10-14 16:50 | 只看该作者
技术手册里是有计算公式的   楼主   按照计算公式算一下  就有答案了   应该没有什么难度的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝