feat: 移植 lwprintf
feat: 创建 can 发送接口 feat: 添加编码器读数接口
This commit is contained in:
31
app/by_can.c
Normal file
31
app/by_can.c
Normal file
@@ -0,0 +1,31 @@
|
||||
#include "by_can.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
|
||||
uint8_t by_can_send_stdd(uint32_t id, const uint8_t *data, uint8_t len)
|
||||
{
|
||||
|
||||
assert(id < 0x7FF);
|
||||
|
||||
if (len > 8) {
|
||||
len = 8;
|
||||
}
|
||||
|
||||
uint8_t transmit_mailbox;
|
||||
can_tx_message_type tx_message_struct;
|
||||
tx_message_struct.standard_id = id; /* 设置发送数据帧的 ID=0x400 */
|
||||
tx_message_struct.extended_id = 0; /* 不设置 */
|
||||
tx_message_struct.id_type = CAN_ID_STANDARD; /* 发送数据帧类型(标准/扩展):标准数据帧 */
|
||||
tx_message_struct.frame_type = CAN_TFT_DATA; /* 发送帧类型(远程/数据):数据帧 */
|
||||
tx_message_struct.dlc = len; /* 发送数据长度(0~8):8 */
|
||||
memcpy(tx_message_struct.data, data, len); /* 复制发送数据 */
|
||||
transmit_mailbox = can_message_transmit(CAN1, &tx_message_struct); /* 将以上待发送报文写入发送邮箱并请求发送 */
|
||||
|
||||
/* 等待该邮箱发送成功—对应邮箱发送成功标志置起 */
|
||||
while (can_transmit_status_get(CAN1, (can_tx_mailbox_num_type)transmit_mailbox) !=
|
||||
CAN_TX_STATUS_SUCCESSFUL)
|
||||
;
|
||||
|
||||
return 0;
|
||||
}
|
||||
8
app/by_can.h
Normal file
8
app/by_can.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef _BY_CAN_H__
|
||||
#define _BY_CAN_H__
|
||||
|
||||
#include "at32f413.h"
|
||||
|
||||
uint8_t by_can_send_stdd(uint32_t id, const uint8_t *data, uint8_t len);
|
||||
|
||||
#endif
|
||||
@@ -6,6 +6,9 @@
|
||||
#define DRV_ENABLE() gpio_bits_set(GPIOB, GPIO_PINS_15)
|
||||
#define DRV_DISABLE() gpio_bits_reset(GPIOB, GPIO_PINS_15)
|
||||
|
||||
int16_t speed_m1;
|
||||
int16_t speed_m2;
|
||||
|
||||
void by_motion_pwm_m1(int32_t pwm_duty)
|
||||
{
|
||||
pwm_duty = clip_s32(pwm_duty, -449, 449); // 不可以拉满哦
|
||||
@@ -24,10 +27,23 @@ void by_motion_pwm_m2(int32_t pwm_duty)
|
||||
tmr_channel_value_set(TMR1, TMR_SELECT_CHANNEL_2, pwm_duty);
|
||||
}
|
||||
|
||||
int16_t by_motion_get_speed_m1(void)
|
||||
{
|
||||
speed_m1 = (int16_t)tmr_counter_value_get(TMR2);
|
||||
tmr_counter_value_set(TMR2, 0);
|
||||
return speed_m1;
|
||||
}
|
||||
|
||||
int16_t by_motion_get_speed_m2(void)
|
||||
{
|
||||
speed_m2 = (int16_t)tmr_counter_value_get(TMR3);
|
||||
tmr_counter_value_set(TMR3, 0);
|
||||
return speed_m2;
|
||||
}
|
||||
|
||||
void by_motion_init(void)
|
||||
{
|
||||
DRV_ENABLE();
|
||||
by_motion_pwm_m1(125);
|
||||
by_motion_pwm_m1(-125);
|
||||
by_motion_pwm_m2(0);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
|
||||
#include "at32f413.h"
|
||||
|
||||
void by_motion_init(void);
|
||||
extern void by_motion_init(void);
|
||||
extern int16_t by_motion_get_speed_m1(void);
|
||||
extern int16_t by_motion_get_speed_m2(void);
|
||||
|
||||
extern int16_t speed_m1;
|
||||
extern int16_t speed_m2;
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user