久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1771|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

PY32F0單片機TIMER定時中斷+Exti外部中斷檢測程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:351957 發(fā)表于 2023-4-26 18:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
========================================================
                                樣例使用說明
========================================================
功能描述:
此樣例演示了在TIM1中基本計數(shù)功能,并使能了更新中斷,每次重裝ARR值時會產(chǎn)生一次
更新中斷,并在中斷中翻轉(zhuǎn)LED燈。檢測到一次下降沿到來,PA6 的電平拉高

========================================================
測試環(huán)境:
測試用板:PY32F030_STK
MDK版本: 5.28

========================================================
使用步驟:
1. 編譯下載程序到MCU,并運行;
2. 可觀察到LED閃爍。


#include "main.h"
#include "tim.h"
#include "gpio.h"
#include "exti.h"


void APP_SystemClockConfig(void);

/**
  * @brief  應(yīng)用程序入口函數(shù).
  * @retval int
  */
int main(void)
{

  /* 初始化所有外設(shè),F(xiàn)lash接口,SysTick */
  HAL_Init();            
  /* 系統(tǒng)時鐘配置 */
  APP_SystemClockConfig();
  /* 初始化GPIO */
  APP_GpioConfig();
  /* 初始化Exti */
  APP_ConfigureExti();
  /* 初始化Time */
  APP_Tim1Config();               
        
        
  while (1)
  {
                if(KEY_down_up==Down_KEY)//檢測到一次下降沿到來
                {
                         KEY_down_up=Up_KEY;
                         HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
                }
  }
}



/**
  * @brief  系統(tǒng)時鐘配置函數(shù)
  * @param  無
  * @retval 無
  */
void APP_SystemClockConfig(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /* 選擇振蕩器HSE,HSI,LSI,LSE */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_LSE;

  RCC_OscInitStruct.HSIState = RCC_HSI_ON;                          /* 開啟HSI */
  RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;                          /* HSI 1分頻 */
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_24MHz; /* 配置HSI時鐘24MHz */
  RCC_OscInitStruct.HSEState = RCC_HSE_OFF;                         /* 關(guān)閉HSE */

  RCC_OscInitStruct.LSIState = RCC_LSI_OFF;                          /* 關(guān)閉LSI */
  RCC_OscInitStruct.LSEState = RCC_LSE_OFF;                         /* 關(guān)閉LSE */

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_OFF;                   /* 關(guān)閉PLL */
        
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;      /* 選擇時鐘源為HSI */
  /* 配置振蕩器 */
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    APP_ErrorHandler();
  }

  /* 時鐘源配置   選擇配置時鐘 HCLK,SYSCLK,PCLK1 */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;        /* AHB時鐘 1分頻 */
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;         /* APB時鐘 1分頻 */
  /* 配置時鐘源 */
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    APP_ErrorHandler();
  }
}

/**
  * @brief  錯誤執(zhí)行函數(shù)
  * @param  無
  * @retval 無
  */
void APP_ErrorHandler(void)
{
  while (1)
  {
  }
}


#include "tim.h"
#include "gpio.h"

TIM_HandleTypeDef    TimHandle;

/**
  * @brief  Timer1初始化
  * @param  無
  * @retval 無
  */
void APP_Tim1Config(void)
{
        
  __HAL_RCC_TIM1_CLK_ENABLE();                                                  /* 使能TIM1時鐘 */
  TimHandle.Instance = TIM1;                                                           /*TIM1*/
  TimHandle.Init.Period            = 8000 - 1;                                          /*TIM1重裝載值位8000-1*/
  TimHandle.Init.Prescaler         = 3000 - 1;                                         /*預(yù)分頻為100-1*/
  TimHandle.Init.ClockDivision     = TIM_CLOCKDIVISION_DIV1;            /*時鐘不分配*/
  TimHandle.Init.CounterMode       = TIM_COUNTERMODE_UP;              /*向上計數(shù)*/
  TimHandle.Init.RepetitionCounter = 0;                                               /*不重復(fù)*/
  TimHandle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;  /*自動重裝載寄存器沒有緩沖*/
  if (HAL_TIM_Base_Init(&TimHandle) != HAL_OK)                               /*初始化TIM1*/
  {
  }

  if (HAL_TIM_Base_Start_IT(&TimHandle) != HAL_OK)                         /* TIM1使能啟動,并使能中斷 */
  {
  }        

}

/**
  * @brief 初始化TIM相關(guān)MSP
  */
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{

  HAL_NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn, 3, 3);  /* 設(shè)置中斷優(yōu)先級 */
  HAL_NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn);         /* 使能TIM1中斷 */
}

void TIM1_BRK_UP_TRG_COM_IRQHandler(void)
{
  HAL_TIM_IRQHandler(&TimHandle);
}

/**
  * @brief  TIM更新中斷回調(diào)函數(shù)
  * @param  htim:TIM句柄
  * @retval 無
  */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
   HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); //GPIO電平翻轉(zhuǎn)
}


#ifndef _TIM_H
#define _TIM_H
#include "main.h"

extern TIM_HandleTypeDef    TimHandle;

void APP_Tim1Config(void);

#endif



#include "exti.h"

EXTI_HandleTypeDef exti_handle;

int  KEY_down_up=Up_KEY;

/**
  * @brief  配置EXTI
  * @param  無
  * @retval 無
  */
void APP_ConfigureExti(void)
{
  GPIO_InitTypeDef  GPIO_InitStruct;
  __HAL_RCC_GPIOB_CLK_ENABLE();                         /* 使能GPIOA時鐘 */
  GPIO_InitStruct.Mode  = GPIO_MODE_IT_FALLING;   /* GPIO模式為下降沿中斷 */
  GPIO_InitStruct.Pull  = GPIO_PULLUP;                      /* 上拉 */
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;   /* 速度為高速 */
  GPIO_InitStruct.Pin = GPIO_PIN_2;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);                /* 使能EXTI中斷 */
  HAL_NVIC_SetPriority(EXTI2_3_IRQn, 2, 0);         /* 配置中斷優(yōu)先級 */

}

/**
  * @brief  中斷入口函數(shù),每產(chǎn)生一次下降沿
  * @param  無
  * @retval 無
  */
void EXTI2_3_IRQHandler(void)
{
        HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);         /* 處理EXTI中斷請求 */
        KEY_down_up=Down_KEY;  
}


#ifndef _EXTI_H
#define _EXTI_H
#include "main.h"

typedef enum
{
  Up_KEY,
  Down_KEY
}KEY_TypeDef;

extern  int  KEY_down_up;

void APP_ConfigureExti(void);

#endif

Keil代碼下載: PY32F0_TIMER.7z (1.03 MB, 下載次數(shù): 18)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91看片在线观看 | 亚洲高清成人 | 91精品国产91久久久 | 亚洲国产黄 | 特级a欧美做爰片毛片 | 日本成人久久 | 国产一区在线免费 | 久久r精品| 性做久久久久久免费观看欧美 | 欧美三级电影在线播放 | 欧美一区二区三区在线观看视频 | 亚洲在线一区 | 成年人在线视频 | 欧美成人高清视频 | 国产精品v | 天天天天操 | 337p日韩 | 91精品国产91久久久久青草 | 国产成人网 | www网站在线观看 | 福利视频一区二区 | 国产精品99久久久久久久vr | 精品久久久久久久久久久 | av手机在线| 亚洲一区二区在线 | 91精品国产91久久久 | 亚洲综合色视频在线观看 | 欧美 日韩 国产 在线 | 色综合国产 | 日韩欧美国产精品一区二区 | 国产高清亚洲 | 精品成人在线视频 | 成人午夜在线视频 | 日本不卡一区二区三区在线观看 | 黄色大片在线免费观看 | 欧美成人精品在线 | 97久久精品午夜一区二区 | 免费看国产一级特黄aaaa大片 | 亚洲国产精品一区二区第一页 | 欧美激情在线观看一区二区三区 | 九九热在线视频免费观看 |