From ece70343e5856d1ff9b4e4311c381a0a89201fb3 Mon Sep 17 00:00:00 2001 From: bmy <2583236812@qq.com> Date: Wed, 13 Dec 2023 21:54:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E5=99=A8=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/by_peripheral_init.c | 20 +++ app/by_peripheral_init.h | 15 ++ app/isr.c | 334 ++++++++++++++++----------------------- app/main.c | 13 +- 4 files changed, 179 insertions(+), 203 deletions(-) create mode 100644 app/by_peripheral_init.c create mode 100644 app/by_peripheral_init.h diff --git a/app/by_peripheral_init.c b/app/by_peripheral_init.c new file mode 100644 index 0000000..c44f301 --- /dev/null +++ b/app/by_peripheral_init.c @@ -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; +} \ No newline at end of file diff --git a/app/by_peripheral_init.h b/app/by_peripheral_init.h new file mode 100644 index 0000000..7e19940 --- /dev/null +++ b/app/by_peripheral_init.h @@ -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 \ No newline at end of file diff --git a/app/isr.c b/app/isr.c index 210feae..af20fec 100644 --- a/app/isr.c +++ b/app/isr.c @@ -1,73 +1,75 @@ /********************************************************************************************************************* -* CH32V307VCT6 Opensourec Library 即(CH32V307VCT6 开源库)是一个基于官方 SDK 接口的第三方开源库 -* Copyright (c) 2022 SEEKFREE 逐飞科技 -* -* 本文件是CH32V307VCT6 开源库的一部分 -* -* CH32V307VCT6 开源库 是免费软件 -* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款 -* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 -* -* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证 -* 甚至没有隐含的适销性或适合特定用途的保证 -* 更多细节请参见 GPL -* -* 您应该在收到本开源库的同时收到一份 GPL 的副本 -* 如果没有,请参阅 -* -* 额外注明: -* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本 -* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中 -* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件 -* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明) -* -* 文件名称 isr -* 公司名称 成都逐飞科技有限公司 -* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明 -* 开发环境 MounRiver Studio V1.8.1 -* 适用平台 CH32V307VCT6 -* 店铺链接 https://seekfree.taobao.com/ -* -* 修改记录 -* 日期 作者 备注 -* 2022-09-15 大W first version -********************************************************************************************************************/ + * CH32V307VCT6 Opensourec Library 即(CH32V307VCT6 开源库)是一个基于官方 SDK 接口的第三方开源库 + * Copyright (c) 2022 SEEKFREE 逐飞科技 + * + * 本文件是CH32V307VCT6 开源库的一部分 + * + * CH32V307VCT6 开源库 是免费软件 + * 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款 + * 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 + * + * 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证 + * 甚至没有隐含的适销性或适合特定用途的保证 + * 更多细节请参见 GPL + * + * 您应该在收到本开源库的同时收到一份 GPL 的副本 + * 如果没有,请参阅 + * + * 额外注明: + * 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本 + * 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中 + * 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件 + * 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明) + * + * 文件名称 isr + * 公司名称 成都逐飞科技有限公司 + * 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明 + * 开发环境 MounRiver Studio V1.8.1 + * 适用平台 CH32V307VCT6 + * 店铺链接 https://seekfree.taobao.com/ + * + * 修改记录 + * 日期 作者 备注 + * 2022-09-15 大W first version + ********************************************************************************************************************/ #include "zf_common_headfile.h" -void NMI_Handler(void) __attribute__((interrupt())); +#include "by_peripheral_init.h" + +void NMI_Handler(void) __attribute__((interrupt())); void HardFault_Handler(void) __attribute__((interrupt())); void USART1_IRQHandler(void) __attribute__((interrupt())); void USART2_IRQHandler(void) __attribute__((interrupt())); void USART3_IRQHandler(void) __attribute__((interrupt())); -void UART4_IRQHandler (void) __attribute__((interrupt())); -void UART5_IRQHandler (void) __attribute__((interrupt())); -void UART6_IRQHandler (void) __attribute__((interrupt())); -void UART7_IRQHandler (void) __attribute__((interrupt())); -void UART8_IRQHandler (void) __attribute__((interrupt())); -void DVP_IRQHandler (void) __attribute__((interrupt())); -//void TIM1_BRK_IRQHandler (void) __attribute__((interrupt())); -void TIM1_UP_IRQHandler (void) __attribute__((interrupt())); -//void TIM1_TRG_COM_IRQHandler (void) __attribute__((interrupt())); -//void TIM1_CC_IRQHandler (void) __attribute__((interrupt())); -void TIM2_IRQHandler (void) __attribute__((interrupt())); -void TIM3_IRQHandler (void) __attribute__((interrupt())); -void TIM4_IRQHandler (void) __attribute__((interrupt())); -void TIM5_IRQHandler (void) __attribute__((interrupt())); -void TIM6_IRQHandler (void) __attribute__((interrupt())); -void TIM7_IRQHandler (void) __attribute__((interrupt())); -//void TIM8_BRK_IRQHandler (void) __attribute__((interrupt())); -void TIM8_UP_IRQHandler (void) __attribute__((interrupt())); -//void TIM8_TRG_COM_IRQHandler (void) __attribute__((interrupt())); -//void TIM8_CC_IRQHandler (void) __attribute__((interrupt())); -//void TIM9_BRK_IRQHandler (void) __attribute__((interrupt())); -void TIM9_UP_IRQHandler (void) __attribute__((interrupt())); -//void TIM9_TRG_COM_IRQHandler (void) __attribute__((interrupt())); -//void TIM9_CC_IRQHandler (void) __attribute__((interrupt())); -//void TIM10_BRK_IRQHandler (void) __attribute__((interrupt())); -void TIM10_UP_IRQHandler (void) __attribute__((interrupt())); -//void TIM10_TRG_COM_IRQHandler (void) __attribute__((interrupt())); -//void TIM10_CC_IRQHandler (void) __attribute__((interrupt())); +void UART4_IRQHandler(void) __attribute__((interrupt())); +void UART5_IRQHandler(void) __attribute__((interrupt())); +void UART6_IRQHandler(void) __attribute__((interrupt())); +void UART7_IRQHandler(void) __attribute__((interrupt())); +void UART8_IRQHandler(void) __attribute__((interrupt())); +void DVP_IRQHandler(void) __attribute__((interrupt())); +// void TIM1_BRK_IRQHandler (void) __attribute__((interrupt())); +void TIM1_UP_IRQHandler(void) __attribute__((interrupt())); +// void TIM1_TRG_COM_IRQHandler (void) __attribute__((interrupt())); +// void TIM1_CC_IRQHandler (void) __attribute__((interrupt())); +void TIM2_IRQHandler(void) __attribute__((interrupt())); +void TIM3_IRQHandler(void) __attribute__((interrupt())); +void TIM4_IRQHandler(void) __attribute__((interrupt())); +void TIM5_IRQHandler(void) __attribute__((interrupt())); +void TIM6_IRQHandler(void) __attribute__((interrupt())); +void TIM7_IRQHandler(void) __attribute__((interrupt())); +// void TIM8_BRK_IRQHandler (void) __attribute__((interrupt())); +void TIM8_UP_IRQHandler(void) __attribute__((interrupt())); +// void TIM8_TRG_COM_IRQHandler (void) __attribute__((interrupt())); +// void TIM8_CC_IRQHandler (void) __attribute__((interrupt())); +// void TIM9_BRK_IRQHandler (void) __attribute__((interrupt())); +void TIM9_UP_IRQHandler(void) __attribute__((interrupt())); +// void TIM9_TRG_COM_IRQHandler (void) __attribute__((interrupt())); +// void TIM9_CC_IRQHandler (void) __attribute__((interrupt())); +// void TIM10_BRK_IRQHandler (void) __attribute__((interrupt())); +void TIM10_UP_IRQHandler(void) __attribute__((interrupt())); +// void TIM10_TRG_COM_IRQHandler (void) __attribute__((interrupt())); +// void TIM10_CC_IRQHandler (void) __attribute__((interrupt())); void EXTI0_IRQHandler(void) __attribute__((interrupt())); void EXTI1_IRQHandler(void) __attribute__((interrupt())); @@ -79,162 +81,134 @@ 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 DEBUG_UART_USE_INTERRUPT // 如果开启 debug 串口中断 - debug_interrupr_handler(); // 调用 debug 串口接收处理函数 数据会被 debug 环形缓冲区读取 -#endif // 如果修改了 DEBUG_UART_INDEX 那这段代码需要放到对应的串口中断去 + if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) { +#if DEBUG_UART_USE_INTERRUPT // 如果开启 debug 串口中断 + debug_interrupr_handler(); // 调用 debug 串口接收处理函数 数据会被 debug 环形缓冲区读取 +#endif // 如果修改了 DEBUG_UART_INDEX 那这段代码需要放到对应的串口中断去 USART_ClearITPendingBit(USART3, USART_IT_RXNE); } } -void UART4_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) +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) +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) +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) +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)) { // 此处编写用户代码 (A10/B10..E10) 引脚触发 @@ -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 更新中断 预置中断处理函数 *----------------- tof_module_exti_handler(); // -----------------* ToF INT 更新中断 预置中断处理函数 *----------------- @@ -262,17 +236,14 @@ void EXTI15_10_IRQHandler(void) // 此处编写用户代码 (A13/B13..E13) 引脚触发 EXTI_ClearITPendingBit(EXTI_Line13); - } - if(SET == EXTI_GetITStatus(EXTI_Line14)) - { + if (SET == EXTI_GetITStatus(EXTI_Line14)) { // -----------------* DM1XA 光信号 预置中断处理函数 *----------------- dm1xa_light_callback(); // -----------------* DM1XA 光信号 预置中断处理函数 *----------------- EXTI_ClearITPendingBit(EXTI_Line14); } - if(SET == EXTI_GetITStatus(EXTI_Line15)) - { + if (SET == EXTI_GetITStatus(EXTI_Line15)) { // -----------------* DM1XA 声/反馈信号 预置中断处理函数 *----------------- dm1xa_sound_callback(); // -----------------* DM1XA 声/反馈信号 预置中断处理函数 *----------------- @@ -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) - { - TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); - - + 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) - { - TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); - - + 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) - { - TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); - - + 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) - { - TIM_ClearITPendingBit(TIM5, TIM_IT_Update ); - - + 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) - { - TIM_ClearITPendingBit(TIM6, TIM_IT_Update ); - + 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) - { - TIM_ClearITPendingBit(TIM7, TIM_IT_Update ); - - + 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 */ @@ -468,26 +407,23 @@ void TIM10_UP_IRQHandler(void) // .weak DMA2_Channel11_IRQHandler /* DMA2 Channel 11 */ /******************************************************************************* -* Function Name : NMI_Handler -* Description : This function handles NMI exception. -* Input : None -* Return : None -*******************************************************************************/ + * Function Name : NMI_Handler + * Description : This function handles NMI exception. + * Input : None + * Return : None + *******************************************************************************/ void NMI_Handler(void) { } /******************************************************************************* -* Function Name : HardFault_Handler -* Description : This function handles Hard Fault exception. -* Input : None -* Return : None -*******************************************************************************/ + * Function Name : HardFault_Handler + * Description : This function handles Hard Fault exception. + * Input : None + * Return : None + *******************************************************************************/ void HardFault_Handler(void) { - while (1) - { - } + while (1) { + } } - - diff --git a/app/main.c b/app/main.c index d71eb23..b620c6c 100644 --- a/app/main.c +++ b/app/main.c @@ -33,6 +33,7 @@ * 2022-09-15 大W first version ********************************************************************************************************************/ #include "zf_common_headfile.h" +#include "by_peripheral_init.h" int main (void) @@ -42,15 +43,19 @@ int main (void) // 此处编写用户代码 例如外设初始化代码等 ips114_init(); - mt9v03x_init(); + by_gpio_init(); + by_exit_init(); + // mt9v03x_init(); // 此处编写用户代码 例如外设初始化代码等 while(1) { // 此处编写需要循环执行的代码 - 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); // 此处编写需要循环执行的代码 } }