V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jiastar1998
V2EX  ›  程序员

请问大家在 stm32f4 怎样设置,控制 can 发送数据频率为 10Hz?

  •  
  •   jiastar1998 · 2020-07-25 17:58:46 +08:00 · 1612 次点击
    这是一个创建于 1619 天前的主题,其中的信息可能已经有所发展或是发生改变。
    9 条回复    2020-07-27 08:41:03 +08:00
    mason961125
        1
    mason961125  
       2020-07-25 18:33:51 +08:00
    大概你是直接用的 HAL 写的吧...没了解过寄存器的,确实不知道怎么算波特率...
    http://www.bittiming.can-wiki.info/
    BTW,单纯选定一个波特率也是不行的,里面四个参数都需要对应考虑(如果你需要和别的设备通信的话)。
    mason961125
        2
    mason961125  
       2020-07-25 18:40:08 +08:00
    想了想,你也许问的不是波特率。如果不是波特率的话,就定时器中断咯,100ms 触发一次然后发送一次。
    jiastar1998
        3
    jiastar1998  
    OP
       2020-07-25 21:12:36 +08:00
    @mason961125 发送数据频率,应该不是波特率,应该是在中断服务函数里
    mason961125
        4
    mason961125  
       2020-07-25 21:20:49 +08:00
    @jiastar1998 #3 那你就用定时器嘛,定时器配置好,每次定时中断触发的时候发送一次数据就好了。
    yejianmail
        5
    yejianmail  
       2020-07-25 22:31:47 +08:00 via Android
    看你是标准库还是 hal 库,hal 可以图形界面配置的
    ltm
        6
    ltm  
       2020-07-25 22:46:18 +08:00
    void vTaskFunction( void * pvParameters )
    {
    /* Block for 500ms. */
    const TickType_t xDelay = 500 / portTICK_PERIOD_MS;

    for( ;; )
    {
    /* Simply toggle the LED every 500ms, blocking between each toggle. */
    vToggleLED();
    vTaskDelay( xDelay );
    }
    }
    ltm
        7
    ltm  
       2020-07-25 22:47:45 +08:00
    参考这个,STM32F4 是可以直接用 CubeMX 配置使用 FreeRTOS 的
    mason961125
        8
    mason961125  
       2020-07-25 22:49:08 +08:00
    @ltm #7 CubeMX 配出来的都是 CMSIS-RTOS 的接口,不推荐直接用 FreeRTOS 的 API 。
    jiastar1998
        9
    jiastar1998  
    OP
       2020-07-27 08:41:03 +08:00
    @yejianmail 采用是 HAL 库,使用 cubemx 配置的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2255 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:09 · PVG 00:09 · LAX 08:09 · JFK 11:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.