Browse Source

update

master
zwsd 3 years ago
parent
commit
b7679c3a17
  1. 113
      main/main.c
  2. 134
      main/motor_drive.c
  3. 68
      main/port.c
  4. 23
      main/port.h

113
main/main.c

@ -17,41 +17,9 @@
#define MAIN_LOG_TAG "MAIN"
/**
* @brief
*/
#define SUPPORT_KEY_INT 1 //是否支持按键
#define KEY_INT1 27
#define KEY_INT2 14
// #define GPIO_KEY_INPUT_PIN_SEL ((1ULL << KEY_INT1) | (1ULL << KEY_INT2))
#define SUPPORT_ELECTRIC_RELAY 1
#define SUPPORT_DEBUG_LIGHT 1
#define SUPPORT_TEMPER_LINE 1
#define SUPPORT_FAN 1
#define ble_uart_tx_size 128
#define ble_uart_rx_size 128
#define ELECTRIC_RELAY1 25 //
#define ELECTRIC_RELAY2 26 //
#define GPIO_ELECTRIC_RELAY_OUTPUT_PIN_SEL ((1ULL << ELECTRIC_RELAY1) | (1ULL << ELECTRIC_RELAY2))
#define DEBUG_LIGHT 12
#define GPIO_DEBUG_LIGHT_OUTPUT_PIN_SEL ((1ULL << DEBUG_LIGHT))
#if SUPPORT_TEMPER_LINE
#define TEMPER_LINE 18
#define GPIO_TEMPER_LINE_INPUT_PIN_SEL ((1ULL << TEMPER_LINE))
#endif
#if SUPPORT_FAN
#define FAN 19
#define GPIO_FAN_OUTPUT_PIN_SEL ((1ULL << FAN))
#endif
typedef struct {
int index;
const char *order;
@ -85,18 +53,6 @@ void order_receipt_setPosition(int index, uint8_t setPosition_code) {
bleuart_notify_send(buffer, strlen((char *)buffer));
}
}
//
// void order_receipt_getStatus(int index) {
// ESP_LOGI(MAIN_LOG_TAG, "Command getStatus execution complete!");
// uint8_t buffer[256] = {0};
// double motor_position = motor_get_position_degree();
// sprintf((char *)buffer,
// "{ \"order\": \"receipt\", \"index\": %d, \"deviceState\": \"running\", \"deviceException\": 0, \"deviceExceptionInfo\": "
// ", \"position\":%lf }",
// index, motor_position);
// bleuart_notify_send(buffer, strlen((char *)buffer));
// }
void construct_get_status_packet_and_report(int index, double motor_position) {
uint8_t buffer[256] = {0};
@ -212,71 +168,6 @@ void motor_on_event(motor_event_t event) {
}
}
#if SUPPORT_KEY_INT
void gpio_input_key_init() {
{ // Key1
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_INPUT;
gpio_grb_led_structer.pin_bit_mask = 1ULL << KEY_INT1;
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
{ // Key2
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_INPUT;
gpio_grb_led_structer.pin_bit_mask = 1ULL << KEY_INT2;
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
}
#endif
#if SUPPORT_ELECTRIC_RELAY
void gpio_electric_relay_init() {
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_OUTPUT;
gpio_grb_led_structer.pin_bit_mask = GPIO_ELECTRIC_RELAY_OUTPUT_PIN_SEL;
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
#endif
#if SUPPORT_DEBUG_LIGHT
void gpio_output_debug_light_init() {
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_INPUT_OUTPUT;
gpio_grb_led_structer.pin_bit_mask = GPIO_DEBUG_LIGHT_OUTPUT_PIN_SEL;
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
void port_do_debug_light_state() {
static uint32_t debug_light_time;
if (port_haspassedms(debug_light_time) > 500) {
gpio_set_level(DEBUG_LIGHT, !gpio_get_level(DEBUG_LIGHT));
debug_light_time = port_get_ticket();
}
}
#endif
void app_main(void) {
bleuart_init(&ble_uart_init_struct);
bleuart_reg_cb(blerxcb);
@ -285,14 +176,10 @@ void app_main(void) {
motor_init(&ble_uart_motor_structer);
motor_reg_event_cb(motor_on_event);
#if SUPPORT_DEBUG_LIGHT
gpio_output_debug_light_init();
#endif
while (true) {
#if SUPPORT_DEBUG_LIGHT
port_do_debug_light_state();
#endif
bleuart_schedule();
motor_module_schedule();

134
main/motor_drive.c

@ -47,7 +47,7 @@ void motor_init(motor_t *motor) {
}
static double motor_drive_read_encoder();
static uint8_t motor_drive_set_packages_ctr(double position, int direction);
// static uint8_t motor_drive_set_packages_ctr(double position, int direction);
/**
* @brief
@ -235,72 +235,72 @@ static double motor_drive_read_encoder() {
* @param direction
* @return uint8_t
*/
static uint8_t motor_drive_set_packages_ctr(double position, int direction) {
int position_int = 0;
uint8_t position_remainder = 0;
uint8_t position_buffer_size = 5; //()
uint8_t checksum = 0;
uint8_t buffer[13] = {0x3E, 0XA7, MOTOR_ID, 0X04, 0XEA, 0X00, 0X00, 0X00, 0X00, 0X00};
// char *notify_err = "set size error";
position_int = position * 100;
if (direction == 2) {
position_int = 0 - position_int;
}
if (position_int != 0) {
if (position_int > 0) { // Positive number
while ((position_int / 0X100) > 0) {
position_remainder = position_int & 0XFF;
buffer[position_buffer_size] = position_remainder;
position_buffer_size += 1;
position_int = position_int >> 8;
checksum += position_remainder;
}
buffer[position_buffer_size] = position_int;
checksum += position_int;
checksum = checksum & 0XFF;
buffer[9] = checksum;
} else { // Negative
while ((position_int / 0X100) < 0) {
position_remainder = position_int & 0XFF;
buffer[position_buffer_size] = position_remainder;
position_buffer_size += 1;
position_int = position_int >> 8;
checksum += position_remainder;
}
buffer[position_buffer_size] = position_int;
position_buffer_size += 1;
while (position_buffer_size != 9) {
buffer[position_buffer_size] = 0XFF;
position_buffer_size += 1;
checksum += 0XFF;
}
checksum += position_int;
checksum = checksum & 0XFF;
buffer[9] = checksum;
}
}
// Send cmd
uart_flush(uart_num);
uart_write_bytes(uart_num, buffer, 10);
position_buffer_size = 0;
memset(buffer, 0, sizeof(buffer));
// Wait uart receive,if time out return error and output log
position_buffer_size = uart_read_bytes(uart_num, buffer, 13, uart_read_time_ms / portTICK_RATE_MS);
if (position_buffer_size != 13 || buffer[0] != 0X3E) {
ESP_LOGW(MOTOR_DRIVE, "set motor size error ,buffer_size:%d,buffer[0] = 0X%x", position_buffer_size, buffer[0]);
// bluetooth_active_notify((uint8_t *)notify_err, strlen(notify_err));
return 1;
}
// Parse receive
// motor_drive_buffer_cmd_parse(buffer);
return 0;
}
// static uint8_t motor_drive_set_packages_ctr(double position, int direction) {
// int position_int = 0;
// uint8_t position_remainder = 0;
// uint8_t position_buffer_size = 5; //()
// uint8_t checksum = 0;
// uint8_t buffer[13] = {0x3E, 0XA7, MOTOR_ID, 0X04, 0XEA, 0X00, 0X00, 0X00, 0X00, 0X00};
// // char *notify_err = "set size error";
// position_int = position * 100;
// if (direction == 2) {
// position_int = 0 - position_int;
// }
// if (position_int != 0) {
// if (position_int > 0) { // Positive number
// while ((position_int / 0X100) > 0) {
// position_remainder = position_int & 0XFF;
// buffer[position_buffer_size] = position_remainder;
// position_buffer_size += 1;
// position_int = position_int >> 8;
// checksum += position_remainder;
// }
// buffer[position_buffer_size] = position_int;
// checksum += position_int;
// checksum = checksum & 0XFF;
// buffer[9] = checksum;
// } else { // Negative
// while ((position_int / 0X100) < 0) {
// position_remainder = position_int & 0XFF;
// buffer[position_buffer_size] = position_remainder;
// position_buffer_size += 1;
// position_int = position_int >> 8;
// checksum += position_remainder;
// }
// buffer[position_buffer_size] = position_int;
// position_buffer_size += 1;
// while (position_buffer_size != 9) {
// buffer[position_buffer_size] = 0XFF;
// position_buffer_size += 1;
// checksum += 0XFF;
// }
// checksum += position_int;
// checksum = checksum & 0XFF;
// buffer[9] = checksum;
// }
// }
// // Send cmd
// uart_flush(uart_num);
// uart_write_bytes(uart_num, buffer, 10);
// position_buffer_size = 0;
// memset(buffer, 0, sizeof(buffer));
// // Wait uart receive,if time out return error and output log
// position_buffer_size = uart_read_bytes(uart_num, buffer, 13, uart_read_time_ms / portTICK_RATE_MS);
// if (position_buffer_size != 13 || buffer[0] != 0X3E) {
// ESP_LOGW(MOTOR_DRIVE, "set motor size error ,buffer_size:%d,buffer[0] = 0X%x", position_buffer_size, buffer[0]);
// // bluetooth_active_notify((uint8_t *)notify_err, strlen(notify_err));
// return 1;
// }
// // Parse receive
// // motor_drive_buffer_cmd_parse(buffer);
// return 0;
// }
bool motor_stop() {
static uint32_t time;

68
main/port.c

@ -1,5 +1,6 @@
#include "port.h"
#include "driver/gpio.h"
#include "esp_log.h"
uint32_t port_get_ticket() { return esp_log_timestamp(); }
@ -11,3 +12,70 @@ uint32_t port_delay_ms(uint32_t ms) {
return 0;
}
void gpio_electric_relay_init() {
{ // ELECTRIC_RELAY1
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_OUTPUT;
gpio_grb_led_structer.pin_bit_mask = (1ULL << GPIO_ELECTRIC_RELAY1);
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
{ // ELECTRIC_RELAY2
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_OUTPUT;
gpio_grb_led_structer.pin_bit_mask = (1ULL << GPIO_ELECTRIC_RELAY2);
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
}
void gpio_output_debug_light_init() {
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_INPUT_OUTPUT;
gpio_grb_led_structer.pin_bit_mask = (1ULL << GPIO_DEBUG_LIGHT);
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
void port_do_debug_light_state() {
static uint32_t debug_light_time;
if (port_haspassedms(debug_light_time) > 500) {
gpio_set_level(GPIO_DEBUG_LIGHT, !gpio_get_level(GPIO_DEBUG_LIGHT));
debug_light_time = port_get_ticket();
}
}
void gpio_input_key_init() {
{ // Key1
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_INPUT;
gpio_grb_led_structer.pin_bit_mask = (1ULL << GPIO_KEY_INT1);
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
{ // Key2
gpio_config_t gpio_grb_led_structer;
gpio_grb_led_structer.intr_type = GPIO_INTR_DISABLE;
gpio_grb_led_structer.mode = GPIO_MODE_INPUT;
gpio_grb_led_structer.pin_bit_mask = (1ULL << GPIO_KEY_INT2);
gpio_grb_led_structer.pull_down_en = 0;
gpio_grb_led_structer.pull_up_en = 0;
gpio_config(&gpio_grb_led_structer);
}
}

23
main/port.h

@ -1,10 +1,33 @@
#pragma once
#include <stdint.h>
/**
* @brief
*/
#define GPIO_KEY_INT1 27
#define GPIO_KEY_INT2 14
// #define GPIO_KEY_INPUT_PIN_SEL ((1ULL << KEY_INT1) | (1ULL << KEY_INT2))
/**
* @brief
*/
#define GPIO_ELECTRIC_RELAY1 25 //
#define GPIO_ELECTRIC_RELAY2 26 //
// #define GPIO_ELECTRIC_RELAY_OUTPUT_PIN_SEL ((1ULL << ELECTRIC_RELAY1) | (1ULL << ELECTRIC_RELAY2))
/**
* @brief
*/
#define GPIO_DEBUG_LIGHT 12
// #define GPIO_DEBUG_LIGHT_OUTPUT_PIN_SEL ((1ULL << DEBUG_LIGHT))
uint32_t port_get_ticket();
uint32_t port_haspassedms(uint32_t ticket);
uint32_t port_delay_ms(uint32_t ms);
void gpio_electric_relay_init();
void gpio_output_debug_light_init();
void port_do_debug_light_state();
void gpio_input_key_init();
Loading…
Cancel
Save