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

张家港建设银行网站asp网站做搜索

张家港建设银行网站,asp网站做搜索,西西美人美体,网站网页设计培训班我给出的要求如下#xff1a; 基于STM32F407 HAL库#xff0c;写一个步进电机控制程序#xff0c;需要控制8个步进电机#xff0c;我会给出描述步进电机的结构体变量#xff0c;基于这些变量需要你做出以下功能#xff0c;电机脉冲通过定时器中断翻转脉冲引脚的电平实现… 我给出的要求如下 基于STM32F407 HAL库写一个步进电机控制程序需要控制8个步进电机我会给出描述步进电机的结构体变量基于这些变量需要你做出以下功能电机脉冲通过定时器中断翻转脉冲引脚的电平实现零点位置在最小限位和最大限位中间运行的距离根据脉冲数而定。功能1电机复位功能电机向最小限位方向运行接收到最小限位信号时停止再向零点位置运行到达零点位置后清零当前脉冲数计数。功能2向指定方向运行指定脉冲数。结构体变量如下enum DIR_E {  DIR_Forward 0,                                                      DIR_Backward                                                       };  typedef struct {     GPIO_TypeDef* port;           uint16_t pin; } GpioPin_t; typedef struct {     GpioPin_t en;         //使能引脚     GpioPin_t dir;        //方向引脚     GpioPin_t pul;        //脉冲引脚     GpioPin_t home;       //零点检测引脚低电平有效     GpioPin_t limit_min;  //最小位置检测引脚低电平有效     GpioPin_t limit_max;  //最大位置检测引脚低电平有效     int32_t PUL_pin_Alter;  } MotorPins_t; /**  * brief 步进电机结构体  */ typedef struct {     MotorPins_t pins;                   //控制引脚定义     TIM_HandleTypeDef* htim;            //高速定时器     TIM_HandleTypeDef* slow_htim;       //低速定时器     int32_t total_steps;                //* 总移动步数计数器*/     __IO int32_t  g_step_position;      /* 当前位置脉冲数 */     __IO int32_t  a_step_position;      /* 目标位置脉冲数 */     enum DIR_E dir;                        //电机方向     enum DIR_E p_dir;                      //电机正方向 需要初始化设置     int32_t home_offset;                //和零点位置偏差脉冲数     uint8_t home_ready;                 //是否复位 1已复位 0未复位。     uint8_t motion_sta;                 //* 是否在运动0停止1运动 */ } StepperMotor_s; 要能够实现多个电机同时运行动作给我一份完整的程序C文件和H文件包括8路电机参数、定时器和引脚的初始化total_steps这个变量表示电机最大能够运行的步数在复位或者其他动作时如果运行超过这个步数还是没有接收到限位传感器信号则立即停止电机。加上中文注释。 GPT给出的程序如下 #ifndef STEPPER_MOTOR_H #define STEPPER_MOTOR_H#include stm32f4xx_hal.h// 电机方向枚举 typedef enum {DIR_Forward 0, // 正向DIR_Backward // 反向 } DIR_E;// GPIO引脚结构体 typedef struct {GPIO_TypeDef* port; // GPIO端口uint16_t pin; // GPIO引脚 } GpioPin_t;// 电机引脚结构体 typedef struct {GpioPin_t en; // 使能引脚GpioPin_t dir; // 方向引脚GpioPin_t pul; // 脉冲引脚GpioPin_t home; // 零点检测引脚GpioPin_t limit_min;// 最小位置检测引脚GpioPin_t limit_max;// 最大位置检测引脚int32_t PUL_pin_Alter; } MotorPins_t;// 步进电机结构体 typedef struct {MotorPins_t pins; // 控制引脚定义TIM_HandleTypeDef* htim; // 定时器句柄int32_t total_steps; // 电机最大步数__IO int32_t g_step_position; // 当前位置脉冲数__IO int32_t a_step_position; // 目标位置脉冲数DIR_E dir; // 当前方向DIR_E p_dir; // 正方向int32_t home_offset; // 零点位置偏移uint8_t home_ready; // 是否已复位uint8_t motion_sta; // 是否在运动 } StepperMotor_s;void Motor_Init(StepperMotor_s* motor); void Motor_Reset(StepperMotor_s* motor); void Motor_Move(StepperMotor_s* motor, int32_t steps);#endif // STEPPER_MOTOR_H #include stepper_motor.h#define NUM_MOTORS 8 // 电机数量StepperMotor_s motors[NUM_MOTORS];// 电机初始化函数 void Motor_Init(StepperMotor_s* motor) {// 在此初始化GPIO和定时器 }// 定时器中断回调函数 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {for (int i 0; i NUM_MOTORS; i) {StepperMotor_s *motor motors[i];if (motor-motion_sta) {HAL_GPIO_TogglePin(motor-pins.pul.port, motor-pins.pul.pin);if (motor-dir DIR_Forward) {motor-g_step_position;} else {motor-g_step_position--;}// 检查是否达到目标位置或超过最大步数if (motor-g_step_position motor-a_step_position || motor-g_step_position motor-total_steps || motor-g_step_position -motor-total_steps) {motor-motion_sta 0;HAL_GPIO_WritePin(motor-pins.en.port, motor-pins.en.pin, GPIO_PIN_SET);}}} }// 电机复位函数 void Motor_Reset(StepperMotor_s* motor) {HAL_GPIO_WritePin(motor-pins.en.port, motor-pins.en.pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(motor-pins.dir.port, motor-pins.dir.pin, DIR_Backward);int32_t step_count 0;while (HAL_GPIO_ReadPin(motor-pins.limit_min.port, motor-pins.limit_min.pin) ! GPIO_PIN_RESET) {HAL_GPIO_TogglePin(motor-pins.pul.port, motor-pins.pul.pin);HAL_Delay(1);step_count;if (step_count motor-total_steps) {break;}}// 移动到零点位置int32_t steps_to_home motor-home_offset;if (steps_to_home 0) {HAL_GPIO_WritePin(motor-pins.dir.port, motor-pins.dir.pin, DIR_Forward);} else {HAL_GPIO_WritePin(motor-pins.dir.port, motor-pins.dir.pin, DIR_Backward);steps_to_home -steps_to_home;}for (int32_t i 0; i steps_to_home; i) {HAL_GPIO_TogglePin(motor-pins.pul.port, motor-pins.pul.pin);HAL_Delay(1);}motor-g_step_position 0;motor-home_ready 1; }// 电机移动函数 void Motor_Move(StepperMotor_s* motor, int32_t steps) {if (steps 0) return;if (steps 0) {motor-dir DIR_Forward;} else {motor-dir DIR_Backward;steps -steps;}motor-a_step_position motor-g_step_position steps;if (motor-a_step_position motor-total_steps) {motor-a_step_position motor-total_steps;} else if (motor-a_step_position -motor-total_steps) {motor-a_step_position -motor-total_steps;}motor-motion_sta 1;HAL_GPIO_WritePin(motor-pins.en.port, motor-pins.en.pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(motor-pins.dir.port, motor-pins.dir.pin, motor-dir); }
http://www.w-s-a.com/news/67870/

相关文章:

  • 一家专做有机蔬菜的网站万户网络是干嘛的
  • 十堰百度网站建设八宝山做网站公司
  • 地区电商网站系统建筑施工图纸培训班
  • 网站外包维护一年多少钱医院网站 功能
  • 电子商务市场的发展前景seo推广平台服务
  • 乐清网页设计公司哪家好seo推广任务小结
  • 360建筑网是什么pc优化工具
  • 越秀免费网站建设风景区网站建设项目建设可行性
  • 网站建站公司一站式服务学校网站开发招标
  • asp.net mvc 5 网站开发之美电商网站 流程图
  • 室内设计素材网站推荐郑州专业做淘宝网站建设
  • 新建的网站怎么做seo优化模板规格尺寸及价格
  • 平湖网站设计做电子元器件销售什么网站好
  • 可视化网站模板我想建个网站网站怎么建域名
  • 达州网站建设qinsanw南京市建设发展集团有限公司网站
  • django 网站开发实例公司排行榜
  • 韩国做美食网站阳江网站建设 公司价格
  • 网站开发哪里接业务长春高端模板建站
  • 深圳网站制作公司方案dw一个完整网页的代码
  • asp手机网站源码下载做seo推广网站
  • 网站优化建议怎么写网站维护主要有哪些内容和方法
  • 建设网站需要钱吗网络推广加盟
  • 高清素材图片的网站泰安网签备案查询
  • 自助网站建设怎么建设房地产的最新政策
  • 企业网站 生成html网站侵权怎么做公证或证据保存
  • php 手机网站cms系统购物网站制作流程
  • 网络公司网站开发河北省城乡住房和建设厅网站
  • 做网站配置wordpress 中文api
  • 怎样把网站做的好看县蒙文网站建设汇报
  • 网站的优化什么做广西桂林新闻最新消息