/********************************************************************************************************************* * MSPM0G3507 Opensource Library 即(MSPM0G3507 开源库)是一个基于官方 SDK 接口的第三方开源库 * Copyright (c) 2022 SEEKFREE 逐飞科技 * * 本文件是 MSPM0G3507 开源库的一部分 * * MSPM0G3507 开源库 是免费软件 * 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款 * 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 * * 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证 * 甚至没有隐含的适销性或适合特定用途的保证 * 更多细节请参见 GPL * * 您应该在收到本开源库的同时收到一份 GPL 的副本 * 如果没有,请参阅 * * 额外注明: * 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本 * 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中 * 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件 * 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明) * * 文件名称 mian * 公司名称 成都逐飞科技有限公司 * 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明 * 开发环境 MDK 5.37 * 适用平台 MSPM0G3507 * 店铺链接 https://seekfree.taobao.com/ ********************************************************************************************************************/ #include "zf_common_headfile.h" // 打开新的工程或者工程移动了位置务必执行以下操作 // 第一步 关闭上面所有打开的文件 // 第二步 project->clean 等待下方进度条走完 // 本例程是开源库空工程 可用作移植或者测试各类内外设 // 本例程是开源库空工程 可用作移植或者测试各类内外设 // 本例程是开源库空工程 可用作移植或者测试各类内外设 // **************************** 代码区域 **************************** #include "Motor.h" #include "zf_device_key.h" #include "Task.h" #include "IMU.h" #include "Beep.h" #include "GrayscaleSensor.h" #include "MotorEncoder.h" /* 定时器资源分配: G0 右电机PWM G7 左电机PWM A0 100Hz任务 A1 50Hz任务 G6 20Hz任务 */ /* 中断等级分配: 0 GPIOA_INT_IRQn 外部中断模拟四倍频正交编码器 1 TIMA0_INT_IRQn 100Hz任务 1 TIMA1_INT_IRQn 50Hz任务 1 UART2_INT_IRQn Command串口接收中断 7 TIMG6_INT_IRQn 20Hz任务 */ int main (void) { clock_init(SYSTEM_CLOCK_80M); // 时钟配置及系统初始化<务必保留> debug_init(); // 调试串口信息初始化 // 此处编写用户代码 例如外设初始化代码等 beep_init(50); motor_init(); key_init(50);//按键初始化,参数为扫描周期50ms imu_init(200);// IMU 初始化,参数为采样频率 200Hz 需要与定时器中断频率一致 imu_calibrate_gyro(); // IMU 陀螺仪零偏校准 需要在静止状态下调用 grayscale_sensor_init();//灰度传感器初始化 motor_encoder_init();//电机编码器初始化 task_init(); beep_on_time(500);//初始化完成,蜂鸣器响 500ms // 此处编写用户代码 例如外设初始化代码等 while(1) { // 此处编写需要循环执行的代码 system_delay_ms(100); char str[20] = {0}; sprintf(str,"%d,%d,%d\n", (int)(imu_angle.yaw*100),(int)(yaw_ref*100),(int)(grayscale_sensor_position*100)); debug_send_buffer((const uint8 *)str,strlen(str)); if(KEY_SHORT_PRESS == key_get_state(KEY_1)) { while(KEY_SHORT_PRESS == key_get_state(KEY_1)); // 等待按键释放 grayscale_sensor_set_white(); beep_on_time(200); } else if(KEY_SHORT_PRESS == key_get_state(KEY_2)) { while(KEY_SHORT_PRESS == key_get_state(KEY_2)); // 等待按键释放 grayscale_sensor_set_black(); beep_on_time(200); } else if(KEY_SHORT_PRESS == key_get_state(KEY_3)) { while(KEY_SHORT_PRESS == key_get_state(KEY_3)); // 等待按键释放 set_yaw_ref(yaw_ref + 5.0f); beep_on_time(200); } else if(KEY_SHORT_PRESS == key_get_state(KEY_4)) { while(KEY_SHORT_PRESS == key_get_state(KEY_4)); // 等待按键释放 set_yaw_ref(yaw_ref - 5.0f); beep_on_time(200); } // 此处编写需要循环执行的代码 } }