Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
BSP
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
PolySTAR
RoboMaster
Controle-et-Systeme
BSP
Compare revisions
0bc8c82cd532f1dddb0f0aa878c549ff939403a4 to 59ef48d59290bd72183badcc0868ad7f0df4b882
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
polystar/robomaster/controle/bsp
Select target project
No results found
59ef48d59290bd72183badcc0868ad7f0df4b882
Select Git revision
Branches
CS_CV
feature/test
master
motor
position_M3508_BSP
remote-tourelle
Swap
Target
polystar/robomaster/controle/bsp
Select target project
polystar/robomaster/controle/bsp
1 result
0bc8c82cd532f1dddb0f0aa878c549ff939403a4
Select Git revision
Branches
CS_CV
feature/test
master
motor
position_M3508_BSP
remote-tourelle
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Commits on Source (1)
ajout de la souris et du clavier pour la manette
· 59ef48d5
Nathan Girard
authored
5 years ago
59ef48d5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Driver/bsp_uart.c
+19
-19
19 additions, 19 deletions
Driver/bsp_uart.c
Driver/bsp_uart.h
+61
-12
61 additions, 12 deletions
Driver/bsp_uart.h
with
80 additions
and
31 deletions
Driver/bsp_uart.c
View file @
59ef48d5
...
...
@@ -15,7 +15,7 @@
#include
"main.h"
#include
"oled.h"
uint8_t
dbus_buf
[
DBUS_BUFLEN
];
rc_info_t
rc
;
RC_ctrl_t
rc_ctrl
;
/**
...
...
@@ -79,27 +79,27 @@ uint16_t dma_current_data_counter(DMA_Stream_TypeDef *dma_stream)
* @param[in] buff: the buff which saved raw rc data
* @retval
*/
void
rc_callback_handler
(
rc_info
_t
*
rc
,
uint8_t
*
buff
)
void
rc_callback_handler
(
RC_ctrl
_t
*
rc
_ctrl
,
uint8_t
*
buff
)
{
rc
->
ch4
=
(
buff
[
0
]
|
buff
[
1
]
<<
8
)
&
0x07FF
;
//0x07FF met la commande sur 11 bits (donc 2048 max)
rc
->
ch4
-=
1024
;
//on centre sur 0
rc
->
ch3
=
(
buff
[
1
]
>>
3
|
buff
[
2
]
<<
5
)
&
0x07FF
;
rc
->
ch3
-=
1024
;
rc
->
ch2
=
(
buff
[
2
]
>>
6
|
buff
[
3
]
<<
2
|
buff
[
4
]
<<
10
)
&
0x07FF
;
rc
->
ch2
-=
1024
;
rc
->
ch1
=
(
buff
[
4
]
>>
1
|
buff
[
5
]
<<
7
)
&
0x07FF
;
rc
->
ch1
-=
1024
;
rc
->
sw1
=
((
buff
[
5
]
>>
4
)
&
0x000C
)
>>
2
;
rc
->
sw2
=
(
buff
[
5
]
>>
4
)
&
0x0003
;
rc
_ctrl
->
rc
.
ch
[
3
]
=
(
buff
[
0
]
|
buff
[
1
]
<<
8
)
&
0x07FF
;
//0x07FF met la commande sur 11 bits (donc 2048 max)
rc
_ctrl
->
rc
.
ch
[
3
]
-=
1024
;
//on centre sur 0
rc
_ctrl
->
rc
.
ch
[
2
]
=
(
buff
[
1
]
>>
3
|
buff
[
2
]
<<
5
)
&
0x07FF
;
rc
_ctrl
->
rc
.
ch
[
2
]
-=
1024
;
rc
_ctrl
->
rc
.
ch
[
1
]
=
(
buff
[
2
]
>>
6
|
buff
[
3
]
<<
2
|
buff
[
4
]
<<
10
)
&
0x07FF
;
rc
_ctrl
->
rc
.
ch
[
1
]
-=
1024
;
rc
_ctrl
->
rc
.
ch
[
0
]
=
(
buff
[
4
]
>>
1
|
buff
[
5
]
<<
7
)
&
0x07FF
;
rc
_ctrl
->
rc
.
ch
[
0
]
-=
1024
;
rc
_ctrl
->
rc
.
sw
[
0
]
=
((
buff
[
5
]
>>
4
)
&
0x000C
)
>>
2
;
rc
_ctrl
->
rc
.
sw
[
1
]
=
(
buff
[
5
]
>>
4
)
&
0x0003
;
if
((
abs
(
rc
->
ch1
)
>
660
)
||
\
(
abs
(
rc
->
ch2
)
>
660
)
||
\
(
abs
(
rc
->
ch3
)
>
660
)
||
\
(
abs
(
rc
->
ch4
)
>
660
))
if
((
abs
(
rc
_ctrl
->
rc
.
ch
[
0
]
)
>
660
)
||
\
(
abs
(
rc
_ctrl
->
rc
.
ch
[
1
]
)
>
660
)
||
\
(
abs
(
rc
_ctrl
->
rc
.
ch
[
2
]
)
>
660
)
||
\
(
abs
(
rc
_ctrl
->
rc
.
ch
[
3
]
)
>
660
))
{
memset
(
rc
,
0
,
sizeof
(
rc_
info_t
));
memset
(
&
rc_ctrl
->
rc
,
0
,
sizeof
(
rc_
ctrl
->
rc
));
}
}
...
...
@@ -123,7 +123,7 @@ static void uart_rx_idle_callback(UART_HandleTypeDef* huart)
/* handle dbus data dbus_buf from DMA */
if
((
DBUS_MAX_LEN
-
dma_current_data_counter
(
huart
->
hdmarx
->
Instance
))
==
DBUS_BUFLEN
)
{
rc_callback_handler
(
&
rc
,
dbus_buf
);
rc_callback_handler
(
&
rc
_ctrl
,
dbus_buf
);
}
/* restart dma transmission */
...
...
This diff is collapsed.
Click to expand it.
Driver/bsp_uart.h
View file @
59ef48d5
...
...
@@ -18,21 +18,70 @@
#define DBUS_MAX_LEN (50)
#define DBUS_BUFLEN (18)
#define DBUS_HUART huart1
/* for dji remote controler reciever */
/* ----------------------- RC Switch Definition----------------------------- */
#define RC_SW_UP ((uint16_t)1)
#define RC_SW_MID ((uint16_t)3)
#define RC_SW_DOWN ((uint16_t)2)
#define switch_is_down(s) (s == RC_SW_DOWN)
#define switch_is_mid(s) (s == RC_SW_MID)
#define switch_is_up(s) (s == RC_SW_UP)
/* ----------------------- PC Key Definition-------------------------------- */
#define KEY_PRESSED_OFFSET_W ((uint16_t)1 << 0)
#define KEY_PRESSED_OFFSET_S ((uint16_t)1 << 1)
#define KEY_PRESSED_OFFSET_A ((uint16_t)1 << 2)
#define KEY_PRESSED_OFFSET_D ((uint16_t)1 << 3)
#define KEY_PRESSED_OFFSET_SHIFT ((uint16_t)1 << 4)
#define KEY_PRESSED_OFFSET_CTRL ((uint16_t)1 << 5)
#define KEY_PRESSED_OFFSET_Q ((uint16_t)1 << 6)
#define KEY_PRESSED_OFFSET_E ((uint16_t)1 << 7)
#define KEY_PRESSED_OFFSET_R ((uint16_t)1 << 8)
#define KEY_PRESSED_OFFSET_F ((uint16_t)1 << 9)
#define KEY_PRESSED_OFFSET_G ((uint16_t)1 << 10)
#define KEY_PRESSED_OFFSET_Z ((uint16_t)1 << 11)
#define KEY_PRESSED_OFFSET_X ((uint16_t)1 << 12)
#define KEY_PRESSED_OFFSET_C ((uint16_t)1 << 13)
#define KEY_PRESSED_OFFSET_V ((uint16_t)1 << 14)
#define KEY_PRESSED_OFFSET_B ((uint16_t)1 << 15)
/* ----------------------- Data Struct ------------------------------------- */
typedef
__packed
struct
{
__packed
struct
{
int16_t
ch
[
5
];
char
sw
[
2
];
}
rc
;
__packed
struct
{
int16_t
x
;
int16_t
y
;
int16_t
z
;
uint8_t
press_l
;
uint8_t
press_r
;
}
mouse
;
__packed
struct
{
uint16_t
v
;
}
key
;
}
RC_ctrl_t
;
/**
* @brief remote control information
*/
typedef
__packed
struct
{
/* rocker channel information */
int16_t
ch1
;
int16_t
ch2
;
int16_t
ch3
;
int16_t
ch4
;
/* left and right lever information */
uint8_t
sw1
;
uint8_t
sw2
;
}
rc_info_t
;
//
typedef __packed struct
//
{
//
/* rocker channel information */
//
int16_t ch1;
//
int16_t ch2;
//
int16_t ch3;
//
int16_t ch4;
//
/* left and right lever information */
//
uint8_t sw1;
//
uint8_t sw2;
//
} rc_info_t;
void
uart_receive_handler
(
UART_HandleTypeDef
*
huart
);
void
dbus_uart_init
(
void
);
...
...
This diff is collapsed.
Click to expand it.