Encoder memes
This commit is contained in:
parent
848b3dddb5
commit
1c4ed62d84
2 changed files with 47 additions and 27 deletions
|
@ -11,6 +11,8 @@
|
||||||
void init_switch_gpio() {
|
void init_switch_gpio() {
|
||||||
// Enable GPIOB
|
// Enable GPIOB
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
||||||
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
|
||||||
|
|
||||||
|
|
||||||
// Set up switch on PB5 and PB6, use internal pull ups
|
// Set up switch on PB5 and PB6, use internal pull ups
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
@ -86,6 +88,8 @@ int main(void)
|
||||||
// mode_position2(&app, &position2_state);
|
// mode_position2(&app, &position2_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("%d\r\n", memecoder_get());
|
||||||
|
|
||||||
// Read data from CAN
|
// Read data from CAN
|
||||||
if(can_recv(&rx_msg)) {
|
if(can_recv(&rx_msg)) {
|
||||||
u32 arbid = rx_msg.ExtId;
|
u32 arbid = rx_msg.ExtId;
|
||||||
|
|
|
@ -8,46 +8,62 @@ int memecoder_count = 0;
|
||||||
|
|
||||||
void memecoder_init() {
|
void memecoder_init() {
|
||||||
// Enable GPIOB
|
// Enable GPIOB
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
||||||
|
|
||||||
// Set up GPIO on port B
|
// Set up GPIO on port B
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
|
||||||
|
|
||||||
// PHASE_A - PB12
|
// PHASE_A - PB12
|
||||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||||
|
|
||||||
// PHASE_A - PB13
|
// PHASE_A - PB13
|
||||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||||
|
|
||||||
// PHASE_A - PB14
|
TIM_DeInit(TIM2);
|
||||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
|
|
||||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
|
||||||
|
TIM_TimeBaseStructInit(&TIM_TimeBaseInitStructure);
|
||||||
|
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
|
||||||
|
|
||||||
|
TIM_ICInitTypeDef TIM_ICInitTypeDefStructure;
|
||||||
|
TIM_ICStructInit(&TIM_ICInitTypeDefStructure);
|
||||||
|
TIM_ICInit(TIM2, &TIM_ICInitTypeDefStructure);
|
||||||
|
TIM_ICInitTypeDefStructure.TIM_Channel = TIM_Channel_2;
|
||||||
|
TIM_ICInit(TIM2, &TIM_ICInitTypeDefStructure);
|
||||||
|
|
||||||
|
TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12, TIM_ICPolarity_Falling, TIM_ICPolarity_Falling);
|
||||||
|
TIM_Cmd(TIM2, ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void memecoder_update() {
|
void memecoder_update() {
|
||||||
u8 cur_state =
|
// u8 cur_state =
|
||||||
GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) << 0 |
|
// GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) << 0 |
|
||||||
GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) << 1 |
|
// GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) << 1;// |
|
||||||
GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) << 2;
|
// GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) << 2;
|
||||||
|
|
||||||
if(cur_state != memecoder_prev_state) {
|
// if(cur_state != memecoder_prev_state) {
|
||||||
if( (memecoder_prev_state == 1 && cur_state == 3) ||
|
// printf("%d\r\n", cur_state);
|
||||||
(memecoder_prev_state == 3 && cur_state == 2) ||
|
// if( (memecoder_prev_state == 0 && cur_state == 1) ||
|
||||||
(memecoder_prev_state == 2 && cur_state == 6) ||
|
// (memecoder_prev_state == 1 && cur_state == 3) ||
|
||||||
(memecoder_prev_state == 6 && cur_state == 4) ||
|
// (memecoder_prev_state == 3 && cur_state == 2) ||
|
||||||
(memecoder_prev_state == 4 && cur_state == 5) ||
|
// (memecoder_prev_state == 2 && cur_state == 0)) {
|
||||||
(memecoder_prev_state == 5 && cur_state == 1)) {
|
// if( (memecoder_prev_state == 1 && cur_state == 3) ||
|
||||||
memecoder_count++;
|
// (memecoder_prev_state == 3 && cur_state == 2) ||
|
||||||
} else {
|
// (memecoder_prev_state == 2 && cur_state == 6) ||
|
||||||
memecoder_count--;
|
// (memecoder_prev_state == 6 && cur_state == 4) ||
|
||||||
}
|
// (memecoder_prev_state == 4 && cur_state == 5) ||
|
||||||
|
// (memecoder_prev_state == 5 && cur_state == 1)) {
|
||||||
|
// memecoder_count++;
|
||||||
|
// } else {
|
||||||
|
// memecoder_count--;
|
||||||
|
// }
|
||||||
|
|
||||||
memecoder_prev_state = cur_state;
|
// memecoder_prev_state = cur_state;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void memecoder_set(int value) {
|
void memecoder_set(int value) {
|
||||||
|
@ -55,7 +71,7 @@ void memecoder_set(int value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int memecoder_get() {
|
int memecoder_get() {
|
||||||
return memecoder_count;
|
return TIM_GetCounter(TIM2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void memecoder_zero() {
|
void memecoder_zero() {
|
||||||
|
|
Loading…
Reference in a new issue