/*******************************************************************************
*
* 軟件功能: 定時器中斷實驗
*
*******************************************************************************/
#include "stm32f10x.h"
#include "delay.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void TIM3_Configuration(u16 arr,u16 psc);
/*************************************************
函數: int main(void)
功能: main主函數
參數: 無
返回: 無
**************************************************/
int main(void)
{
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
TIM3_Configuration(4999,7199);//10Khz的計數頻率,計數到5000為500ms
//delay_init(72);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
while(1);
}
/*************************************************
函數: void RCC_Configuration(void)
功能: 復位和時鐘控制 配置
參數: 無
返回: 無
**************************************************/
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus; //定義外部高速晶體啟動狀態枚舉變量
RCC_DeInit(); //復位RCC外部設備寄存器到默認值
RCC_HSEConfig(RCC_HSE_ON); //打開外部高速晶振
HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待外部高速時鐘準備好
if(HSEStartUpStatus == SUCCESS) //外部高速時鐘已經準別好
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //開啟FLASH預讀緩沖功能,加速FLASH的讀取。所有程序中必須的用法.位置:RCC初始化子函數里面,時鐘起振之后
FLASH_SetLatency(FLASH_Latency_2); //flash操作的延時
RCC_HCLKConfig(RCC_SYSCLK_Div1); //配置AHB(HCLK)時鐘等于==SYSCLK
RCC_PCLK2Config(RCC_HCLK_Div1); //配置APB2(PCLK2)鐘==AHB時鐘
RCC_PCLK1Config(RCC_HCLK_Div2); //配置APB1(PCLK1)鐘==AHB1/2時鐘
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //配置PLL時鐘 == 外部高速晶體時鐘 * 9 = 72MHz
RCC_PLLCmd(ENABLE); //使能PLL時鐘
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL時鐘就緒
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //配置系統時鐘 = PLL時鐘
while(RCC_GetSYSCLKSource() != 0x08) //檢查PLL時鐘是否作為系統時鐘
{
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //允許 GPIOB、AFIO時鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //時鐘使能
}
/*************************************************
函數: void GPIO_Configuration(void)
功能: GPIO配置
參數: 無
返回: 無
**************************************************/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定義GPIO初始化結構體
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure); //PB用于輸出控制LED燈
}
void NVIC_Configuration(void) //中斷分組和優先級配置 詳見《STM32的函數說明(中文).pdf》P165
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優先級0級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優先級3級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
}
void TIM3_Configuration(u16 arr,u16 psc) //TIM3定時器配置
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據指定的參數初始化TIMx的時間基數單位
/*((1+7199[TIM_Prescaler] )/72M)*(1+4999[TIM_Period] )=500,000us=500ms */
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中斷,允許更新中斷
TIM_Cmd(TIM3, ENABLE); //使能TIMx
}
//定時器3中斷服務程序
void TIM3_IRQHandler(void) //TIM3中斷
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //檢查TIM3更新中斷發生與否
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中斷標志
if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)) GPIO_SetBits(GPIOB,GPIO_Pin_0);
else GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
}
上一篇:STM32單片機(6) PWM輸出實驗
下一篇:STM32單片機(3) 串口中斷通信
推薦閱讀
史海拾趣
奇美公司的創業歷程始于XXXX年,當時電子產業正處于蓬勃發展的初期。公司創始人憑借對電子行業的敏銳洞察力和堅定的創業決心,帶領一支充滿激情和創造力的團隊,開始了奇美的創業之路。在創業初期,奇美專注于電子產品的研發和生產,通過不斷的技術創新和市場拓展,逐漸在行業內嶄露頭角。
AIE公司自2005年成立以來,一直致力于推動電子測試配件的安全規范標準化。公司積極與各大電子廠商、行業協會以及標準化組織展開合作,共同制定了一系列關于測試配件的性能規格和安全標準。這一舉措不僅提升了AIE產品的競爭力,也促進了整個電子行業的健康發展。通過與業界的緊密合作,AIE逐漸在電子測試配件領域樹立了良好的口碑。
AE&ST公司深知人才是企業發展的根本。公司注重人才培養和團隊建設,通過提供良好的工作環境和激勵機制,吸引了大批優秀的研發和管理人才。同時,公司還積極開展員工培訓和教育活動,提升員工的專業技能和綜合素質。這些措施為公司的持續發展提供了有力的人才保障。
Elec公司成立于20世紀初,最初只是一家小型電子元件生產商。創始人李明(化名)對電子技術有著深厚的興趣和獨到的見解。在他的帶領下,Elec公司逐步研發出具有競爭力的電阻、電容等基礎元件,并逐漸在市場中嶄露頭角。隨著電子技術的不斷發展,Elec公司敏銳地捕捉到半導體技術的潛力,開始投入巨資研發。經過數年的努力,Elec公司成功研發出具有自主知識產權的半導體芯片,這一突破讓Elec公司在電子行業中聲名鵲起。
隨著技術的不斷進步,AINFO Inc公司不斷推出創新產品,滿足市場的多樣化需求。公司注重產品的質量和性能,通過優化設計和生產工藝,提高了產品的競爭力。同時,公司積極開拓國內外市場,與多家知名企業建立了合作關系,實現了產品的廣泛應用。
隨著新能源和儲能市場的快速發展,福斯特公司也積極拓展相關業務領域。公司不僅關注光伏材料的研發和生產,還將目光投向了動力電池及儲能領域。例如,公司推出的鋁塑復合膜產品已完成一期2000萬平米擴產項目,并計劃未來進一步拓展至動力電池及儲能領域。這一舉措不僅豐富了公司的產品線,還為公司帶來了新的增長點和發展機遇。同時,福斯特還加強與新能源產業鏈上下游企業的合作,共同推動新能源和儲能產業的發展。
按下16個矩陣鍵盤依次在數碼管上顯示1-16的平方。如按下第一個顯示1,第二個顯示4... 我寫了第3行的檢測,就是說:按鍵按下的話 ,會顯示:16 25 36 49: 但是我在實驗板上運行的時候,高位的數字只會閃一下 ...… 查看全部問答∨ |
|
Hp2490如何打開無線網卡,連接指定SSID,最好用C#完成,謝謝 Hp2490如何打開無線網卡,連接指定SSID,最好用C#完成,例如,我們辦公室有N個無線網絡,我想通過程序控制連接其中指定一個網絡。… 查看全部問答∨ |
|
前一陣重新裝機,從網上下了個IAR 3.41 然后有個小工具生成序列號,安裝過程沒問題,可是在程序編譯時出現下面的提示: Fatal Error[Cp001]: Copy protection check, No valid license found for this product [20] 這是什么問題呀?… 查看全部問答∨ |
|
今天看了下點陣的教程,自己跑去搞了下 ,結果弄是弄出來,可就是每次圖像移動前都會紅一團 這是電路圖還有代碼,大大幫忙看看#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbi ...… 查看全部問答∨ |