Cortex-M3库函数定时器中断

  1. 三种定时器的区别

STM32F1xx系列总共有 八个定时器

两个高级定时器 + 四个通用定时器 + 两个基本定时器

  1. 通用定时器的特点描述

1.位于ABP1低速总线上

2.16位向下,向上/向下(中心对齐模式)计数模式,自动重装载计数器(TIMx_CNT)

3.16位可编程(可以实现修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~65535任意数值

4.四个独立通道(TIMx_CH1~4),通道用来支持:

①输入捕获

②输出比较

③PWM生成

④单脉冲模式输出

5.可使用外部信号(TIM_ETR)控制定时器和定时器互连的同步电路。

定时器中断/事件产生 : (六个独立的IRQ/DMA 请求生成器)

①更新: 计数器向上/向下溢出,计数器初始化(软件或者外部/内部触发)

②触发事件:计数器的启动,停止,初始化或者由内部/外部触发计数

③输入捕获

④输出比较

⑤支持针对定位的增量编码器和霍尔传感器电路

⑥触发输入作为外部时钟或者按周期的电流管理

STM32通用定时器 可以被用于:测量输入信号的脉冲长度(输入捕获),或者产生输入波形(输出比较和PWM)等。

STM32通用定时器 可以被用于:测量输入信号的脉冲长度(输入捕获),或者产生输入波形(输出比较和PWM)等。

定时器的预分频器和RCC时钟控制预分频器,脉冲长度和波形周期可以在us到ms之间调整,每个通用定时器都是完全独立,没有互相共享任何内存。

  1. 计数器模式

STM32通用定时器 可以向上,向下,向上/向下双向计数模式

① 向上计数模式:计数值从0 计数到自动加载值(TIM_ARR),产生一个计数溢出事件,然后重新从0开始计数

②向下计数模式:计数器从自动装入的值(TIM_ARR)开始向下计数到0,产生一个计数溢出事件,然后从计数装入值重新开始。

③中央对齐模式:计数器从0开始到(自动装入值-1),产生计数溢出事件,然后向下计数到1,产生定时器溢出事件,然后从0开始计数。

  1. 通用定时器工作模式

1.时钟部分: (时钟来源)

①内部时钟APB1倍频器

②外部引脚(通用定时器2,3,4)

③其他定时器

④外部通道

2.时基单元 :

①预分频(除法)

②计数器时钟

③自动重装载值

3.输入部分:

①输入引脚

②边沿检测

4.输出部分 :

①输出比较寄存器

周期---重装载值

占空比---比较值

  1. 计数器时钟计算方法

除非APB1分频系数为1,否则通用定时器时钟为APB1的两倍

举例:

AHB= 72M

APB1=36M (分频系数为2)

通用定时器时钟为 36 x2= 72M

  1. 定时器相关寄存器

1.计数器寄存器CNT : 当前计数值

2.预分频寄存器 : 分频系数 (PSC+1) / N = CNT

3.自动重装载寄存器: 重装载值

4.控制寄存器: 控制计数方向

  1. 定时器库函数结构体

typedef struct
{
  uint16_t TIM_Prescaler;            //初始化预分频值 
 uint16_t TIM_Period;                  //设定自动装载值 
  uint16_t TIM_CounterMode;      //设定计数模式                  
  uint16_t TIM_ClockDivision;       //输入捕获使用
  uint8_t TIM_RepetitionCounter;  //高级定时器使用                                        

} TIM_TimeBaseInitTypeDef; 
void TIM_TimeBaseInit           //定时器初始化
(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
void TIM_Cmd                           //定时器使能
(TIM_TypeDef* TIMx, FunctionalState NewState);
FlagStatus TIM_GetFlagStatus   //定时器状态标志位
(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag                      //定时器清楚标志位
(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus             //定时器中断标志位
(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit          //定时器清楚中断标志位
(TIM_TypeDef* TIMx, uint16_t TIM_IT);

  1. 定时器中断配置过程

1. 使能时钟 定时器时钟

2. 配置定时器结构体 ,

3.开启定时器中断,配置中断结构体

4.中断服务函数

定时器配置LED每秒闪烁一次

Tout = [ 重装载值(ARR+1) * 分频系数(PSC+1)] /Tclk

Tout = 100000(9999+1) *7200(分频系数 7199+1) /72M(72 000 000)

  1. NVIC相关结构体及函数

NVIC中断优先级嵌套参数配置结构体(misc.h)
typedef struct
{
      uint8_t NVIC_IRQChannel;/*设置中断通道(需要去stm32f10x.h中查找)                    /*!< Specifies the IRQ channel to be enabled or disabled.
                                                       This parameter can be a value of @ref IRQn_Type 
                                                       (For the complete STM32 Devices IRQ Channels list, please
                                                        refer to stm32f10x.h file) */
    typedef enum IRQn
    {
    /******  Cortex-M3 Processor Exceptions Numbers ***************************************************/
      NonMaskableInt_IRQn         = -14,    /*!< 2 Non Maskable Interrupt                             */
      MemoryManagement_IRQn       = -12,    /*!< 4 Cortex-M3 Memory Management Interrupt              */
      BusFault_IRQn               = -11,    /*!< 5 Cortex-M3 Bus Fault Interrupt                      */
      UsageFault_IRQn             = -10,    /*!< 6 Cortex-M3 Usage Fault Interrupt                    */
      SVCall_IRQn                 = -5,     /*!< 11 Cortex-M3 SV Call Interrupt                       */
      DebugMonitor_IRQn           = -4,     /*!< 12 Cortex-M3 Debug Monitor Interrupt                 */
      PendSV_IRQn                 = -2,     /*!< 14 Cortex-M3 Pend SV Interrupt                       */
      SysTick_IRQn                = -1,     /*!< 15 Cortex-M3 System Tick Interrupt                   */
    
    /******  STM32 specific Interrupt Numbers *********************************************************/
      WWDG_IRQn                   = 0,      /*!< Window WatchDog Interrupt                            */
      PVD_IRQn                    = 1,      /*!< PVD through EXTI Line detection Interrupt            */
      TAMPER_IRQn                 = 2,      /*!< Tamper Interrupt                                     */
      RTC_IRQn                    = 3,      /*!< RTC global Interrupt                                 */
      FLASH_IRQn                  = 4,      /*!< FLASH global Interrupt                               */
      RCC_IRQn                    = 5,      /*!< RCC global Interrupt                                 */
      EXTI0_IRQn                  = 6,      /*!< EXTI Line0 Interrupt                                 */
      EXTI1_IRQn                  = 7,      /*!< EXTI Line1 Interrupt                                 */
      EXTI2_IRQn                  = 8,      /*!< EXTI Line2 Interrupt                                 */
      EXTI3_IRQn                  = 9,      /*!< EXTI Line3 Interrupt                                 */
      EXTI4_IRQn                  = 10,     /*!< EXTI Line4 Interrupt                                 */
      DMA1_Channel1_IRQn          = 11,     /*!< DMA1 Channel 1 global Interrupt                      */
      DMA1_Channel2_IRQn          = 12,     /*!< DMA1 Channel 2 global Interrupt                      */
      DMA1_Channel3_IRQn          = 13,     /*!< DMA1 Channel 3 global Interrupt                      */
      DMA1_Channel4_IRQn          = 14,     /*!< DMA1 Channel 4 global Interrupt                      */
      DMA1_Channel5_IRQn          = 15,     /*!< DMA1 Channel 5 global Interrupt                      */
      DMA1_Channel6_IRQn          = 16,     /*!< DMA1 Channel 6 global Interrupt                      */
      DMA1_Channel7_IRQn          = 17,     /*!< DMA1 Channel 7 global Interrupt                      */
    
    #ifdef STM32F10X_LD
      ADC1_2_IRQn                 = 18,     /*!< ADC1 and ADC2 global Interrupt                       */
      USB_HP_CAN1_TX_IRQn         = 19,     /*!< USB Device High Priority or CAN1 TX Interrupts       */
      USB_LP_CAN1_RX0_IRQn        = 20,     /*!< USB Device Low Priority or CAN1 RX0 Interrupts       */
      CAN1_RX1_IRQn               = 21,     /*!< CAN1 RX1 Interrupt                                   */
      CAN1_SCE_IRQn               = 22,     /*!< CAN1 SCE Interrupt                                   */
      EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                        */
      TIM1_BRK_IRQn               = 24,     /*!< TIM1 Break Interrupt                                 */
      TIM1_UP_IRQn                = 25,     /*!< TIM1 Update Interrupt                                */
      TIM1_TRG_COM_IRQn           = 26,     /*!< TIM1 Trigger and Commutation Interrupt               */
      TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                       */
      TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                */
      TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                */
      I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                 */
      I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                 */
      SPI1_IRQn                   = 35,     /*!< SPI1 global Interrupt                                */
      USART1_IRQn                 = 37,     /*!< USART1 global Interrupt                              */
      USART2_IRQn                 = 38,     /*!< USART2 global Interrupt                              */
      EXTI15_10_IRQn              = 40,     /*!< External Line[15:10] Interrupts                      */
      RTCAlarm_IRQn               = 41,     /*!< RTC Alarm through EXTI Line Interrupt                */
      USBWakeUp_IRQn              = 42      /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */    
    #endif /* STM32F10X_LD */  
    
    #ifdef STM32F10X_LD_VL
      ADC1_IRQn                   = 18,     /*!< ADC1 global Interrupt                                */
      EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                        */
      TIM1_BRK_TIM15_IRQn         = 24,     /*!< TIM1 Break and TIM15 Interrupts                      */
      TIM1_UP_TIM16_IRQn          = 25,     /*!< TIM1 Update and TIM16 Interrupts                     */
      TIM1_TRG_COM_TIM17_IRQn     = 26,     /*!< TIM1 Trigger and Commutation and TIM17 Interrupt     */
      TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                       */
      TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                */
      TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                */
      I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                 */
      I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                 */
      SPI1_IRQn                   = 35,     /*!< SPI1 global Interrupt                                */
      USART1_IRQn                 = 37,     /*!< USART1 global Interrupt                              */
      USART2_IRQn                 = 38,     /*!< USART2 global Interrupt                              */
      EXTI15_10_IRQn              = 40,     /*!< External Line[15:10] Interrupts                      */
      RTCAlarm_IRQn               = 41,     /*!< RTC Alarm through EXTI Line Interrupt                */
      CEC_IRQn                    = 42,     /*!< HDMI-CEC Interrupt                                   */
      TIM6_DAC_IRQn               = 54,     /*!< TIM6 and DAC underrun Interrupt                      */
      TIM7_IRQn                   = 55      /*!< TIM7 Interrupt                                       */       
    #endif /* STM32F10X_LD_VL */
    
    #ifdef STM32F10X_MD
      ADC1_2_IRQn                 = 18,     /*!< ADC1 and ADC2 global Interrupt                       */
      USB_HP_CAN1_TX_IRQn         = 19,     /*!< USB Device High Priority or CAN1 TX Interrupts       */
      USB_LP_CAN1_RX0_IRQn        = 20,     /*!< USB Device Low Priority or CAN1 RX0 Interrupts       */
      CAN1_RX1_IRQn               = 21,     /*!< CAN1 RX1 Interrupt                                   */
      CAN1_SCE_IRQn               = 22,     /*!< CAN1 SCE Interrupt                                   */
      EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                        */
      TIM1_BRK_IRQn               = 24,     /*!< TIM1 Break Interrupt                                 */
      TIM1_UP_IRQn                = 25,     /*!< TIM1 Update Interrupt                                */
      TIM1_TRG_COM_IRQn           = 26,     /*!< TIM1 Trigger and Commutation Interrupt               */
      TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                       */
      TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                */
      TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                */
      TIM4_IRQn                   = 30,     /*!< TIM4 global Interrupt                                */
      I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                 */
      I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                 */
      I2C2_EV_IRQn                = 33,     /*!< I2C2 Event Interrupt                                 */
      I2C2_ER_IRQn                = 34,     /*!< I2C2 Error Interrupt                                 */
      SPI1_IRQn                   = 35,     /*!< SPI1 global Interrupt                                */
      SPI2_IRQn                   = 36,     /*!< SPI2 global Interrupt                                */
      USART1_IRQn                 = 37,     /*!< USART1 global Interrupt                              */
      USART2_IRQn                 = 38,     /*!< USART2 global Interrupt                              */
      USART3_IRQn                 = 39,     /*!< USART3 global Interrupt                              */
      EXTI15_10_IRQn              = 40,     /*!< External Line[15:10] Interrupts                      */
      RTCAlarm_IRQn               = 41,     /*!< RTC Alarm through EXTI Line Interrupt                */
      USBWakeUp_IRQn              = 42      /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */  
    #endif /* STM32F10X_MD */  
    
    #ifdef STM32F10X_MD_VL
      ADC1_IRQn                   = 18,     /*!< ADC1 global Interrupt                                */
      EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                        */
      TIM1_BRK_TIM15_IRQn         = 24,     /*!< TIM1 Break and TIM15 Interrupts                      */
      TIM1_UP_TIM16_IRQn          = 25,     /*!< TIM1 Update and TIM16 Interrupts                     */
      TIM1_TRG_COM_TIM17_IRQn     = 26,     /*!< TIM1 Trigger and Commutation and TIM17 Interrupt     */
      TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                       */
      TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                */
      TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                */
      TIM4_IRQn                   = 30,     /*!< TIM4 global Interrupt                                */
      I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                 */
      I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                 */
      I2C2_EV_IRQn                = 33,     /*!< I2C2 Event Interrupt                                 */
      I2C2_ER_IRQn                = 34,     /*!< I2C2 Error Interrupt                                 */
      SPI1_IRQn                   = 35,     /*!< SPI1 global Interrupt                                */
      SPI2_IRQn                   = 36,     /*!< SPI2 global Interrupt                                */
      USART1_IRQn                 = 37,     /*!< USART1 global Interrupt                              */
      USART2_IRQn                 = 38,     /*!< USART2 global Interrupt                              */
      USART3_IRQn                 = 39,     /*!< USART3 global Interrupt                              */
      EXTI15_10_IRQn              = 40,     /*!< External Line[15:10] Interrupts                      */
      RTCAlarm_IRQn               = 41,     /*!< RTC Alarm through EXTI Line Interrupt                */
      CEC_IRQn                    = 42,     /*!< HDMI-CEC Interrupt                                   */
      TIM6_DAC_IRQn               = 54,     /*!< TIM6 and DAC underrun Interrupt                      */
      TIM7_IRQn                   = 55      /*!< TIM7 Interrupt                                       */       
    #endif /* STM32F10X_MD_VL */
    
    #ifdef STM32F10X_HD
      ADC1_2_IRQn                 = 18,     /*!< ADC1 and ADC2 global Interrupt                       */
      USB_HP_CAN1_TX_IRQn         = 19,     /*!< USB Device High Priority or CAN1 TX Interrupts       */
      USB_LP_CAN1_RX0_IRQn        = 20,     /*!< USB Device Low Priority or CAN1 RX0 Interrupts       */
      CAN1_RX1_IRQn               = 21,     /*!< CAN1 RX1 Interrupt                                   */
      CAN1_SCE_IRQn               = 22,     /*!< CAN1 SCE Interrupt                                   */
      EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                        */
      TIM1_BRK_IRQn               = 24,     /*!< TIM1 Break Interrupt                                 */
      TIM1_UP_IRQn                = 25,     /*!< TIM1 Update Interrupt                                */
      TIM1_TRG_COM_IRQn           = 26,     /*!< TIM1 Trigger and Commutation Interrupt               */
      TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                       */
      TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                */
      TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                */
      TIM4_IRQn                   = 30,     /*!< TIM4 global Interrupt                                */
      I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                 */
      I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                 */
      I2C2_EV_IRQn                = 33,     /*!< I2C2 Event Interrupt                                 */
      I2C2_ER_IRQn                = 34,     /*!< I2C2 Error Interrupt                                 */
      SPI1_IRQn                   = 35,     /*!< SPI1 global Interrupt                                */
      SPI2_IRQn                   = 36,     /*!< SPI2 global Interrupt                                */
      USART1_IRQn                 = 37,     /*!< USART1 global Interrupt                              */
      USART2_IRQn                 = 38,     /*!< USART2 global Interrupt                              */
      USART3_IRQn                 = 39,     /*!< USART3 global Interrupt                              */
      EXTI15_10_IRQn              = 40,     /*!< External Line[15:10] Interrupts                      */
      RTCAlarm_IRQn               = 41,     /*!< RTC Alarm through EXTI Line Interrupt                */
      USBWakeUp_IRQn              = 42,     /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */
      TIM8_BRK_IRQn               = 43,     /*!< TIM8 Break Interrupt                                 */
      TIM8_UP_IRQn                = 44,     /*!< TIM8 Update Interrupt                                */
      TIM8_TRG_COM_IRQn           = 45,     /*!< TIM8 Trigger and Commutation Interrupt               */
      TIM8_CC_IRQn                = 46,     /*!< TIM8 Capture Compare Interrupt                       */
      ADC3_IRQn                   = 47,     /*!< ADC3 global Interrupt                                */
      FSMC_IRQn                   = 48,     /*!< FSMC global Interrupt                                */
      SDIO_IRQn                   = 49,     /*!< SDIO global Interrupt                                */
      TIM5_IRQn                   = 50,     /*!< TIM5 global Interrupt                                */
      SPI3_IRQn                   = 51,     /*!< SPI3 global Interrupt                                */
      UART4_IRQn                  = 52,     /*!< UART4 global Interrupt                               */
      UART5_IRQn                  = 53,     /*!< UART5 global Interrupt                               */
      TIM6_IRQn                   = 54,     /*!< TIM6 global Interrupt                                */
      TIM7_IRQn                   = 55,     /*!< TIM7 global Interrupt                                */
      DMA2_Channel1_IRQn          = 56,     /*!< DMA2 Channel 1 global Interrupt                      */
      DMA2_Channel2_IRQn          = 57,     /*!< DMA2 Channel 2 global Interrupt                      */
      DMA2_Channel3_IRQn          = 58,     /*!< DMA2 Channel 3 global Interrupt                      */
      DMA2_Channel4_5_IRQn        = 59      /*!< DMA2 Channel 4 and Channel 5 global Interrupt        */
    #endif /* STM32F10X_HD */  
    
    #ifdef STM32F10X_HD_VL
      ADC1_IRQn                   = 18,     /*!< ADC1 global Interrupt                                */
      EXTI9_5_IRQn                = 23,     /*!< External Line[9:5] Interrupts                        */
      TIM1_BRK_TIM15_IRQn         = 24,     /*!< TIM1 Break and TIM15 Interrupts                      */
      TIM1_UP_TIM16_IRQn          = 25,     /*!< TIM1 Update and TIM16 Interrupts                     */
      TIM1_TRG_COM_TIM17_IRQn     = 26,     /*!< TIM1 Trigger and Commutation and TIM17 Interrupt     */
      TIM1_CC_IRQn                = 27,     /*!< TIM1 Capture Compare Interrupt                       */
      TIM2_IRQn                   = 28,     /*!< TIM2 global Interrupt                                */
      TIM3_IRQn                   = 29,     /*!< TIM3 global Interrupt                                */
      TIM4_IRQn                   = 30,     /*!< TIM4 global Interrupt                                */
      I2C1_EV_IRQn                = 31,     /*!< I2C1 Event Interrupt                                 */
      I2C1_ER_IRQn                = 32,     /*!< I2C1 Error Interrupt                                 */
      I2C2_EV_IRQn                = 33,     /*!< I2C2 Event Interrupt                                 */
      I2C2_ER_IRQn                = 34
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 当在KEIL中使用ST-LINKV2烧录程序进入STM32F103c8t6时,出现"Error: Flash Download failed - "Cortex-M3""错误。这个错误可能是由于程序编译时选择了不兼容的芯片型号导致的。例如,正点原子STM32F1开发板中的库函数的跑马灯程序适用于STM32F103ZET6芯片,而与STM32F103C8T6芯片并不完全兼容。为了解决这个问题,你需要将程序工程配置成STM32F103C8T6的环境。你可以点击魔术棒,选择"Device",然后选择"STM32F103C8",最后点击"ok"来进行配置。此外,你还可以在KEIL的项目选项中的C/C++/PREPROMCESSOR symbols的Define栏里定义芯片型号,或者在STM32F10X.H文件中使用宏定义来指定芯片型号。如果芯片之间存在较大的差别,比如最大主频率不同,你还需要更改程序中的定时器操作等。总之,根据实际情况进行相应的配置和修改,通常只需要进行第一步和第二步就可以将程序移植到新的芯片上运行。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Error: Flash Download failed - “Cortex-M3](https://blog.csdn.net/qq_44619221/article/details/124051529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [更换STM32芯片类型引起keil下载Error Flash download failed-Cortex-M3问题的解决](https://blog.csdn.net/qq_26602023/article/details/47044439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小徐的记事本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值