当前位置: 首页 > news >正文

BetaFlight源码解读01

1.打开main.c

  init();

  run();

void systemInit(void)
{
    int ret;

    clock_gettime(CLOCK_MONOTONIC, &start_time);
    printf("[system]Init...\n");

    SystemCoreClock = 500 * 1e6; // virtual 500MHz

    if (pthread_mutex_init(&updateLock, NULL) != 0) {
        printf("Create updateLock error!\n");
        exit(1);
    }

    if (pthread_mutex_init(&mainLoopLock, NULL) != 0) {
        printf("Create mainLoopLock error!\n");
        exit(1);
    }

    ret = pthread_create(&tcpWorker, NULL, tcpThread, NULL);
    if (ret != 0) {
        printf("Create tcpWorker error!\n");
        exit(1);
    }

    ret = udpInit(&pwmLink, simulator_ip, PORT_PWM, false);
    printf("[SITL] init PwmOut UDP link to gazebo %s:%d...%d\n", simulator_ip, PORT_PWM, ret);

    ret = udpInit(&pwmRawLink, simulator_ip, PORT_PWM_RAW, false);
    printf("[SITL] init PwmOut UDP link to RF9 %s:%d...%d\n", simulator_ip, PORT_PWM_RAW, ret);

    ret = udpInit(&stateLink, NULL, PORT_STATE, true);
    printf("[SITL] start UDP server @%d...%d\n", PORT_STATE, ret);

    ret = udpInit(&rcLink, NULL, PORT_RC, true);
    printf("[SITL] start UDP server for RC input @%d...%d\n", PORT_RC, ret);

    ret = pthread_create(&udpWorker, NULL, udpThread, NULL);
    if (ret != 0) {
        printf("Create udpWorker error!\n");
        exit(1);
    }

    ret = pthread_create(&udpWorkerRC, NULL, udpRCThread, NULL);
    if (ret != 0) {
        printf("Create udpRCThread error!\n");
        exit(1);
    }
}
void tasksInitData(void)
{
    for (int i = 0; i < TASK_COUNT; i++) {
        tasks[i].attribute = &task_attributes[i];
    }
}

相关文章:

  • MacOS Big Sur 11 新机安装brew wget python3.12 exo
  • MySQL 中,SELECT ... FOR UPDATE
  • 游戏引擎学习第140天
  • 【C++】Class(1)
  • 虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放
  • 数据可视化大屏产品设计方案(附Axure源文件预览)
  • 【JavaSE-7】方法的使用
  • 【C语言】函数篇
  • 安装remixd,在VScode创建hardhat
  • 软考架构师笔记-数据库系统
  • 确认机制的分类及其区别与联系探讨
  • 在springboot项目中引入log4j 2.x
  • mysql进阶(三)
  • 【CSS 】Class Variance Authority CSS 类名管理工具库
  • JVM与性能调优详解
  • 香港电讯CE2.0网络全面升级,100G服务支援企业关键应用
  • Unity InputField + ScrollRect实现微信聊天输入框功能
  • unity学习64,第3个小游戏:一个2D跑酷游戏
  • 如何用更少的内存训练你的PyTorch模型?深度学习GPU内存优化策略总结
  • Linux 上离线安装 python3
  • LPR名副其实吗?如果有所偏离又该如何调整?
  • 李洋谈美国黑帮电影与黑帮文化
  • 光速晋级!2025年多哈世乒赛孙颖莎4比0战胜对手
  • 雅典卫城上空现“巨鞋”形状无人机群,希腊下令彻查
  • 国家防汛抗旱总指挥部对15个重点省份开展汛前实地督导检查
  • 最高检公布一起离婚纠纷典型案例:推动离婚经济补偿制度落实