feat: 新增编码器驱动

This commit is contained in:
bmy
2023-12-13 21:54:20 +08:00
parent eaa7cc0eea
commit ece70343e5
4 changed files with 179 additions and 203 deletions

20
app/by_peripheral_init.c Normal file
View File

@@ -0,0 +1,20 @@
#include "by_peripheral_init.h"
#include "zf_common_headfile.h"
uint8_t potate_button;
void by_gpio_init(void)
{
gpio_init(E10, GPI, GPIO_HIGH, GPI_PULL_UP);
}
void by_exit_init(void)
{
exti_init(E9, EXTI_TRIGGER_FALLING);
exti_init(E11, EXTI_TRIGGER_FALLING);
}
uint8_t by_get_pb_statu(void)
{
uint8_t temp_s = potate_button;
potate_button = 0;
return temp_s;
}

15
app/by_peripheral_init.h Normal file
View File

@@ -0,0 +1,15 @@
#ifndef _BY_PERIPHERAL_INIT_H__
#define _BY_PERIPHERAL_INIT_H__
#include "stdio.h"
#include "ch32v30x.h"
#define POTATE_BUTTOM_PRESS 1
#define POTATE_BUTTOM_FOREWARD 2
#define POTATE_BUTTOM_BACKWARD 3
extern uint8_t potate_button;
extern void by_exit_init(void);
extern void by_gpio_init(void);
extern uint8_t by_get_pb_statu(void);
#endif

160
app/isr.c
View File

@@ -34,6 +34,8 @@
********************************************************************************************************************/
#include "zf_common_headfile.h"
#include "by_peripheral_init.h"
void NMI_Handler(void) __attribute__((interrupt()));
void HardFault_Handler(void) __attribute__((interrupt()));
@@ -79,25 +81,21 @@ void EXTI15_10_IRQHandler(void) __attribute__((interrupt()));
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
}
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) {
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
}
}
void USART3_IRQHandler(void)
{
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) {
#if DEBUG_UART_USE_INTERRUPT // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> debug <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
debug_interrupr_handler(); // <20><><EFBFBD><EFBFBD> debug <20><><EFBFBD>ڽ<EFBFBD><DABD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݻᱻ debug <20><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
#endif // <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD> DEBUG_UART_INDEX <20><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ж<EFBFBD>ȥ
@@ -106,135 +104,111 @@ void USART3_IRQHandler(void)
}
void UART4_IRQHandler(void)
{
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(UART4, USART_IT_RXNE) != RESET) {
USART_ClearITPendingBit(UART4, USART_IT_RXNE);
}
}
void UART5_IRQHandler(void)
{
if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(UART5, USART_IT_RXNE) != RESET) {
camera_uart_handler();
USART_ClearITPendingBit(UART5, USART_IT_RXNE);
}
}
void UART6_IRQHandler(void)
{
if(USART_GetITStatus(UART6, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(UART6, USART_IT_RXNE) != RESET) {
USART_ClearITPendingBit(UART6, USART_IT_RXNE);
}
}
void UART7_IRQHandler(void)
{
if(USART_GetITStatus(UART7, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(UART7, USART_IT_RXNE) != RESET) {
wireless_module_uart_handler();
USART_ClearITPendingBit(UART7, USART_IT_RXNE);
}
}
void UART8_IRQHandler(void)
{
if(USART_GetITStatus(UART8, USART_IT_RXNE) != RESET)
{
if (USART_GetITStatus(UART8, USART_IT_RXNE) != RESET) {
gps_uart_callback();
USART_ClearITPendingBit(UART8, USART_IT_RXNE);
}
}
void DVP_IRQHandler(void)
{
if (DVP->IFR & RB_DVP_IF_FRM_DONE)
{
if (DVP->IFR & RB_DVP_IF_FRM_DONE) {
camera_dvp_handler();
DVP->IFR &= ~RB_DVP_IF_FRM_DONE;
}
}
void EXTI0_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line0))
{
if (SET == EXTI_GetITStatus(EXTI_Line0)) {
EXTI_ClearITPendingBit(EXTI_Line0);
}
}
void EXTI1_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line1))
{
if (SET == EXTI_GetITStatus(EXTI_Line1)) {
EXTI_ClearITPendingBit(EXTI_Line1);
}
}
void EXTI2_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line2))
{
if (SET == EXTI_GetITStatus(EXTI_Line2)) {
EXTI_ClearITPendingBit(EXTI_Line2);
}
}
void EXTI3_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line3))
{
if (SET == EXTI_GetITStatus(EXTI_Line3)) {
EXTI_ClearITPendingBit(EXTI_Line3);
}
}
void EXTI4_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line4))
{
if (SET == EXTI_GetITStatus(EXTI_Line4)) {
EXTI_ClearITPendingBit(EXTI_Line4);
}
}
void EXTI9_5_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line5))
{
if (SET == EXTI_GetITStatus(EXTI_Line5)) {
EXTI_ClearITPendingBit(EXTI_Line5);
}
if(SET == EXTI_GetITStatus(EXTI_Line6))
{
if (SET == EXTI_GetITStatus(EXTI_Line6)) {
EXTI_ClearITPendingBit(EXTI_Line6);
}
if(SET == EXTI_GetITStatus(EXTI_Line7))
{
if (SET == EXTI_GetITStatus(EXTI_Line7)) {
EXTI_ClearITPendingBit(EXTI_Line7);
}
if(SET == EXTI_GetITStatus(EXTI_Line8))
{
if (SET == EXTI_GetITStatus(EXTI_Line8)) {
EXTI_ClearITPendingBit(EXTI_Line8);
}
if(SET == EXTI_GetITStatus(EXTI_Line9))
{
if (SET == EXTI_GetITStatus(EXTI_Line9)) {
EXTI_ClearITPendingBit(EXTI_Line9);
if (SET == gpio_get_level(E10)) {
potate_button = POTATE_BUTTOM_BACKWARD;
} else {
potate_button = POTATE_BUTTOM_FOREWARD;
}
}
}
void EXTI15_10_IRQHandler(void)
{
if(SET == EXTI_GetITStatus(EXTI_Line10))
{
if (SET == EXTI_GetITStatus(EXTI_Line10)) {
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> (A10/B10..E10) <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>
@@ -242,18 +216,18 @@ void EXTI15_10_IRQHandler(void)
EXTI_ClearITPendingBit(EXTI_Line10);
}
if(SET == EXTI_GetITStatus(EXTI_Line11))
{
if (SET == EXTI_GetITStatus(EXTI_Line11)) {
EXTI_ClearITPendingBit(EXTI_Line11);
system_delay_us(200);
if (SET == !gpio_get_level(E11)) {
potate_button = POTATE_BUTTOM_PRESS;
}
if(SET == EXTI_GetITStatus(EXTI_Line12))
{
}
if (SET == EXTI_GetITStatus(EXTI_Line12)) {
EXTI_ClearITPendingBit(EXTI_Line12);
}
if(SET == EXTI_GetITStatus(EXTI_Line13))
{
if (SET == EXTI_GetITStatus(EXTI_Line13)) {
// -----------------* ToF INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
tof_module_exti_handler();
// -----------------* ToF INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
@@ -262,17 +236,14 @@ void EXTI15_10_IRQHandler(void)
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> (A13/B13..E13) <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>
EXTI_ClearITPendingBit(EXTI_Line13);
}
if(SET == EXTI_GetITStatus(EXTI_Line14))
{
if (SET == EXTI_GetITStatus(EXTI_Line14)) {
// -----------------* DM1XA <20><><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
dm1xa_light_callback();
// -----------------* DM1XA <20><><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
EXTI_ClearITPendingBit(EXTI_Line14);
}
if(SET == EXTI_GetITStatus(EXTI_Line15))
{
if (SET == EXTI_GetITStatus(EXTI_Line15)) {
// -----------------* DM1XA <20><>/<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
dm1xa_sound_callback();
// -----------------* DM1XA <20><>/<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
@@ -280,108 +251,76 @@ void EXTI15_10_IRQHandler(void)
}
}
void TIM1_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
}
}
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}
}
void TIM4_IRQHandler(void)
{
if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
}
}
void TIM5_IRQHandler(void)
{
if(TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM5, TIM_IT_Update);
}
}
void TIM6_IRQHandler(void)
{
if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM6, TIM_IT_Update);
}
}
void TIM7_IRQHandler(void)
{
if(TIM_GetITStatus(TIM7, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM7, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM7, TIM_IT_Update);
}
}
void TIM8_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM8, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM8, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM8, TIM_IT_Update);
}
}
void TIM9_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM9, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM9, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM9, TIM_IT_Update);
}
}
void TIM10_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM10, TIM_IT_Update) != RESET)
{
if (TIM_GetITStatus(TIM10, TIM_IT_Update) != RESET) {
TIM_ClearITPendingBit(TIM10, TIM_IT_Update);
}
}
//.section .text.vector_handler, "ax", @progbits
// .weak EXTI0_IRQHandler /* EXTI Line 0 */
@@ -485,9 +424,6 @@ void NMI_Handler(void)
*******************************************************************************/
void HardFault_Handler(void)
{
while (1)
{
while (1) {
}
}

View File

@@ -33,6 +33,7 @@
* 2022-09-15 <20><>W first version
********************************************************************************************************************/
#include "zf_common_headfile.h"
#include "by_peripheral_init.h"
int main (void)
@@ -42,15 +43,19 @@ int main (void)
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ips114_init();
mt9v03x_init();
by_gpio_init();
by_exit_init();
// mt9v03x_init();
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(1)
{
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD><D0B4>Ҫѭ<D2AA><D1AD>ִ<EFBFBD>еĴ<D0B5><C4B4><EFBFBD>
if(mt9v03x_finish_flag){
ips114_show_gray_image(0, 0, mt9v03x_image[0], 188, 120, 188, 120,0);
}
// if(mt9v03x_finish_flag){
// ips114_show_gray_image(0, 0, mt9v03x_image[0], 188, 120, 188, 120,0);
// }
printf("%d\r\n",by_get_pb_statu());
system_delay_ms(100);
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD><D0B4>Ҫѭ<D2AA><D1AD>ִ<EFBFBD>еĴ<D0B5><C4B4><EFBFBD>
}
}