STM32CAN常用波特率配置,从此不再为计算那该死的BS1,BS2而烦恼。

2019-07-20 23:08发布

RT。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
48条回答
MIFANHTS
1楼-- · 2019-07-25 17:54
一直想找的。谢谢、
STM32YZ
2楼-- · 2019-07-25 19:30
STM32YZ 发表于 2016-11-29 08:26
谢谢楼主分享


谢谢支持。
stm32tag
3楼-- · 2019-07-25 19:56
[mw_shl_code=applescript,true]switch (iBaud)
        {
                case        CAN_BAUD_5K:                                                                                                        /* BAUD = 5kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_8tq;                                                /* 时间段1 */
                                                                                                                                                        // TS1[3:0],定义时间段1占用了多少个时间单元
                CAN_InitStructure.CAN_BS2                = CAN_BS2_7tq;                                                /* 时间段2 */
                                                                                                                                                        // TS2[2:0],定义时间段2占用了多少个时间单元
                CAN_InitStructure.CAN_Prescaler        = 450;                                                                /* 波特率预分频 F/(BS1+BS2+1)/PRE */
                break;
                case        CAN_BAUD_10K:                                                                                                        /* BAUD = 10kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_8tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_7tq;
                CAN_InitStructure.CAN_Prescaler        = 225;
                break;
                case        CAN_BAUD_20K:                                                                                                        /* BAUD = 20kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 150;
                break;
                case        CAN_BAUD_25K:                                                                                                        /* BAUD = 25kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_8tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_7tq;
                CAN_InitStructure.CAN_Prescaler        = 90;
                break;
                case        CAN_BAUD_30K:                                                                                                        /* BAUD = 30kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_8tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_7tq;
                CAN_InitStructure.CAN_Prescaler        = 75;
                break;
                case        CAN_BAUD_40K:                                                                                                        /* BAUD = 40kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 75;
                break;
                case        CAN_BAUD_50K:                                                                                                        /* BAUD = 50kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_8tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_7tq;
                CAN_InitStructure.CAN_Prescaler        = 45;
                break;
        case        CAN_BAUD_60K:                                                                                                        /* BAUD = 60kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 50;
                break;
        case        CAN_BAUD_80K:                                                                                                        /* BAUD = 80kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_5tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_4tq;
                CAN_InitStructure.CAN_Prescaler        = 45;
                break;
        case        CAN_BAUD_90K:                                                                                                        /* BAUD = 90kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_5tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_4tq;
                CAN_InitStructure.CAN_Prescaler        = 40;
                break;
        case        CAN_BAUD_100K:                                                                                                        /* BAUD = 100kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 30;
                break;
        case        CAN_BAUD_200K:                                                                                                        /* BAUD = 200kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 15;
                break;
        case        CAN_BAUD_300K:                                                                                                        /* BAUD = 300kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 10;
                break;
        case        CAN_BAUD_400K:                                                                                                        /* BAUD = 400kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_5tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_4tq;
                CAN_InitStructure.CAN_Prescaler        = 9;
                break;
        case        CAN_BAUD_500K:                                                                                                        /* BAUD = 500kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_4tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_3tq;
                CAN_InitStructure.CAN_Prescaler        = 9;
                break;
        case        CAN_BAUD_600K:                                                                                                        /* BAUD = 600kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 5;
                break;
        case        CAN_BAUD_800K:                                                                                                        /* BAUD = 800kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_4tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_4tq;
                CAN_InitStructure.CAN_Prescaler        = 5;
                break;
        case        CAN_BAUD_900K:                                                                                                        /* BAUD = 900kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_5tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_4tq;
                CAN_InitStructure.CAN_Prescaler        = 4;
                break;
        case        CAN_BAUD_1000K:                                                                                                        /* BAUD = 1000kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_6tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_5tq;
                CAN_InitStructure.CAN_Prescaler        = 3;
                break;
        default:                                                                                                                                /* BAUD = 50kbps */
                CAN_InitStructure.CAN_BS1                = CAN_BS1_8tq;
                CAN_InitStructure.CAN_BS2                = CAN_BS2_7tq;
                CAN_InitStructure.CAN_Prescaler        = 45;
                break;
        }[/mw_shl_code]
a4615800
4楼-- · 2019-07-26 01:37
 精彩回答 2  元偷偷看……
MIFANHTS
5楼-- · 2019-07-26 03:13
 精彩回答 2  元偷偷看……
stm32tag
6楼-- · 2019-07-26 06:32
好东西!

一周热门 更多>