OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7940|回复: 3

[新人试水] LPC1768 RTT_Nano3 Shell

[复制链接]

55

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2018-8-7
在线时间
55 小时
发表于 2019-3-14 16:38:04 | 显示全部楼层 |阅读模式
本帖最后由 Fillmore 于 2019-3-14 16:50 编辑

RT Nano V3初级教程第二章 Finsh Shell.pdf (785.16 KB, 下载次数: 13)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

55

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2018-8-7
在线时间
55 小时
 楼主| 发表于 2019-3-14 16:52:34 | 显示全部楼层
本帖最后由 Fillmore 于 2019-3-14 16:54 编辑

[mw_shl_code=c,true]/*-----------------------------------BEGIN-------------------------------------*/
//add by hjb 精准波特率
voidrt_uart_precise_baudset(rt_uint32_t bps, rt_uint8_t *m_fdr, rt_uint32_t *m_fdiv)
{
    typedef struct
    {
       rt_uint8_t Div: 4; //分频
       rt_uint8_t Mul: 4; //乘数
    } rt_uart_dcm_tbl;
    //1-[000-999]+\,
    rt_uart_dcm_tbl const tbl[] =
    {
       { 0, 1 }, { 1, 15}, { 1, 14}, { 1, 13},
       { 1, 12}, { 1, 11}, { 1, 10}, { 1, 9 },
       { 1, 8 }, { 2, 15}, { 1, 7 }, { 2, 13},
       { 1, 6 }, { 2, 11}, { 1, 5 }, { 3, 14},
       { 2, 9 }, { 3, 13}, { 1, 4 }, { 4, 15},
       { 3, 11}, { 2, 7 }, { 3, 10}, { 4, 13},
       { 1, 3 }, { 5, 14}, { 4, 11}, { 3, 8 },
       { 5, 13}, { 2, 5 }, { 5, 12}, { 3, 7 },
       { 4, 9 }, { 5, 11}, { 6, 13}, { 7, 15},//-----------4*9
       { 1, 2 }, { 8, 15}, { 7, 13}, { 6, 11},
       { 5, 9 }, { 4, 7 }, { 7, 12}, { 3, 5 },
       { 8, 13}, { 5, 8 }, { 7, 11}, { 9, 14},
       { 2, 3 }, { 9, 13}, { 7, 10}, { 5, 7 },
       { 8, 11}, { 11, 15}, { 3, 4 }, { 10, 13},
       { 7, 9 }, { 11, 14}, { 4, 5 }, { 9, 11},
       { 5, 6 }, { 11, 13}, { 6, 7 }, { 13, 15},
       { 7, 8 }, { 8, 9 }, { 9, 10}, { 10, 11},
       { 11, 12}, { 12, 13}, { 13, 14}, { 14, 15},
    };
    rt_uint8_t i = 0, k = 0, j = 0;
    rt_uint8_t m_err[72] = {0};
    rt_uint32_t fDiv, uDLest;
    rt_uint32_t uartClock = SystemCoreClock / 4; // 外设时钟与内核时钟的比例
    float fFRest = 1.5;// tFRest = 1.5, tAbs, min;
    if (uartClock % (16 * bps) == 0) // PCLK / (16*bps)为整数
    {
       m_fdr[0] = 0x10;// 关闭分频器
       m_fdiv[0] = (uartClock >> 4) / ( bps );
       return;
    }
    k = 0xff;
    for(i = 0; i < 72; i++)            //遍历
    {
       uDLest = (uint32_t)(uartClock * tbl.Mul / (16 * bps * (tbl.Mul + tbl.Div)));
       fFRest = (float)(uartClock * tbl.Mul) / (float)(16 * bps * uDLest * (tbl.Mul + tbl.Div));     //频率相对偏差
       fDiv = (uint32_t)((fFRest - 1) * 10000);
       if(fDiv > 0xff)
       {
           m_err = 0xff;
       }
       else
       {
           m_err = fDiv;
       }
       if(m_err < k)
       {
           k = m_err;     //得到误差最小的那个
           j = i;
           m_fdr[0] = tbl[j].Div | (tbl[j].Mul << 4);
           m_fdiv[0] = uDLest;
       }
    }
}
//

/*-----------------------------------BEGIN-------------------------------------*/[/mw_shl_code]


用法:

图2-18修正函数用法


@# s2.13 115200bps再测试
我的天呢,没有搞定!!!而且运行得还更惨了,输出了,怎么回事!
俺说过,要改波特别率是不是?PC上的软件是不是没有改过来?改过来再试试,是不是完美了?

2.14 俺的Finsh Shell 显示东西少
怎么函数是干什么的都没有显示呢?在rt_config.h中添加 #define FINSH_USING_DESCRIPTION



图2-19

效果如图2-20所示。

图2-20带功能提示的Shell

2018-3-18 02:16 上传



图2-20带功能提示的Shell

2.15 Linker的设置要不要?
我在测试时,发现Linker上没有设置,RT3也能跑Finsh Shell。有遇到问题的是在2.1.1上,没有添加linker设置时,“msh>”这个死活不出来,编译什么的都没有问题。我也没有去细看RT3的修改说明,如果没有特别的要求要去掉的话,建议还是将linker的设置留下来比较稳妥。
<<<这条还是请大师们给个回复吧>>>

回复 支持 反对

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2019-3-15 09:55:15 | 显示全部楼层
帮顶~~
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2019-7-17
在线时间
39 小时
发表于 2021-2-19 11:06:00 | 显示全部楼层
了解下,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表