Skip to content

本仓库是西南科技大学智能系统与智慧服务创新实践班参加全国大学生电子设计大赛的模块实现

License

Notifications You must be signed in to change notification settings

nanwanuser/IPCS-Embedded-module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPCS-Embedded-Module

简介

西南科技大学智能系统与智慧服务创新实践班嵌入式通用模块库,用于全国大学生电子设计大赛。

模块列表

模块 功能 特性
data_communication_pkg 数据通信协议 支持串口/SPI/I2C,CRC16校验
Encoder 编码器接口 MG370霍尔编码器,多实例管理
NanwanAHRS 姿态估计 四阶龙格-库塔积分,6轴/9轴
servo_sg90 舵机控制 0-180°精确控制,速度控制
NRF24L01/hw_spi 无线通信(硬件SPI) 2.4GHz,硬件SPI接口
NRF24L01/soft_spi 无线通信(软件SPI) 2.4GHz,纯GPIO实现
OLED_u8g2 OLED显示 基于U8g2库,128x64像素

使用方法

  1. 克隆仓库
git clone https://github.com/nanwanuser/IPCS-Embedded-Module.git
  1. 复制所需模块文件到工程目录

  2. 根据模块README进行配置和使用

模块编写规范

文件命名

  • 文件命名: 模块名.c模块名.h
  • 函数命名: 模块名_功能动词()
  • 变量命名: 下划线分隔的小写字母

代码结构

/* ========================= 用户配置参数区 ========================= */
#define FRAME_HEADER      0xAA55
#define MAX_DATA_LENGTH   256

/* ========================= 数据类型定义 ========================= */
typedef enum {
    STATUS_OK = 0,
    STATUS_ERROR
} ModuleStatus;

/* ========================= API函数接口 ========================= */
void module_init(void);
int module_process(uint8_t *data, uint16_t len);

/* ========================= 用户实现接口 ========================= */
void user_transmit(uint8_t *data, uint16_t len);
void user_callback(uint8_t cmd, uint8_t *data, uint16_t len);

注释规范

/**
  * @brief  函数简要说明
  * @param  参数名 : 参数说明
  * @retval 返回值说明
  * @note   注意事项或补充说明
  */

README编写规范

每个模块的README包含:

  1. 模块简介 - 功能描述和主要特性
  2. API函数接口 - 基本函数和用户实现函数
  3. 使用示例 - 初始化、基本使用、实际应用

快速开始示例

数据通信协议

#include "data_communication_pkg.h"

int main(void)
{
    HAL_Init();
    MX_USART1_UART_Init();
    data_comm_init();
    
    // 发送传感器数据
    uint8_t data[] = {0x12, 0x34, 0x56, 0x78};
    data_comm_send(0x01, data, 4);
    
    while(1);
}

void user_transmit(uint8_t *data, uint16_t len)
{
    HAL_UART_Transmit(&huart1, data, len, 100);
}

编码器使用

#include "encoder_module.h"

int main(void)
{
    encoder_handle_t encoder;
    
    HAL_Init();
    MX_TIM2_Init();
    Encoder_QuickInit(&htim2, &encoder);
    
    while(1) {
        int16_t speed = Encoder_GetSpeed(encoder);
        float position = Encoder_GetPosition(encoder);
        printf("速度: %d RPM, 位置: %.1f mm\n", speed, position);
        HAL_Delay(100);
    }
}

姿态估计

#include "nanwan_ahrs.h"

int main(void)
{
    HAL_Init();
    nanwan_ahrs_init(NULL);  // 默认配置
    
    while(1) {
        float roll, pitch, yaw;
        nanwan_ahrs_get_euler_degrees(&roll, &pitch, &yaw);
        printf("姿态: Roll=%.1f° Pitch=%.1f° Yaw=%.1f°\n", roll, pitch, yaw);
        HAL_Delay(100);
    }
}

舵机控制

#include "servo_control.h"

int main(void)
{
    HAL_Init();
    MX_TIM3_Init();
    servo_init();
    
    while(1) {
        servo_set_angle_speed(0, 0.0, 45.0);    // 转到0°
        HAL_Delay(2000);
        servo_set_angle_speed(0, 180.0, 45.0);  // 转到180°
        HAL_Delay(2000);
    }
}

无线通信

#include "nrf24l01_hardware_spi.h"

int main(void)
{
    HAL_Init();
    MX_SPI1_Init();
    nrf24l01_hw_init();
    
    // 发送端
    uint8_t data[] = "Hello NRF24L01!";
    nrf24l01_hw_tx_mode(40, NULL);
    nrf24l01_hw_send(data, sizeof(data));
    
    // 接收端
    uint8_t rx_buffer[32];
    nrf24l01_hw_rx_mode(40, NULL);
    uint8_t len = nrf24l01_hw_receive(rx_buffer, sizeof(rx_buffer));
    
    while(1);
}

贡献指南

  1. Fork本仓库
  2. 创建新分支 (git checkout -b feature/your-module-name)
  3. 提交更改 (git commit -m 'Add: 模块描述')
  4. 推送到分支 (git push origin feature/your-module-name)
  5. 创建Pull Request

开源许可证

MIT License

About

本仓库是西南科技大学智能系统与智慧服务创新实践班参加全国大学生电子设计大赛的模块实现

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages