stmf庫函數(shù)筆記_第1頁
stmf庫函數(shù)筆記_第2頁
stmf庫函數(shù)筆記_第3頁
stmf庫函數(shù)筆記_第4頁
stmf庫函數(shù)筆記_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、( 1) GPIO_Mode_AIN模擬輸入( 2) GPIO_Mode_IN_FLOATING浮空輸入( 3) GPIO_Mode_IPD下拉輸入( 4) GPIO_Mode_IPU上拉輸入( 5) GPIO_Mode_Out_OD開漏輸出( 6) GPIO_Mode_Out_PP推挽輸出( 7) GPIO_Mode_AF_OD復(fù)用開漏輸出( 8) GPIO_Mode_AF_PP復(fù)用推挽輸出平時(shí)接觸的最多的也就是推挽輸出、開漏輸出、上拉輸入這三種推挽輸出:可以輸出高,低電平,連接數(shù)字器件;開漏輸出:輸出端相當(dāng)于三極管的集電極.要得到高電平狀態(tài)需要上拉電阻才行,一般來說,開漏是用來連接不同電平

2、的器件,匹配電平用的,因?yàn)殚_漏引腳不連接外部的上拉電阻時(shí),只能輸出低電平。浮空輸入:由于浮空輸入一般多用于外部按鍵輸入,結(jié)合圖上的輸入部分電路,我理解為浮空輸入狀態(tài)下,IO的電平狀態(tài)是不確定的,完全由外部輸入決定,如果在該引腳懸空的情況下,讀取該端口的電平是不確定的。GPIOGPIO_Init函數(shù)初始化GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);使能GPIOF時(shí)鐘/GPIOF9,F10初始化設(shè)置GPIO_InitStructure.GPIO_Pin=GPIO_Pin

3、_9|GPIO_Pin_10;/LED0和LED1對(duì)應(yīng)IO口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;/普通輸出模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;/推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;/100MHzGPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;/上拉GPIO_Init(GPIOF,&GPIO_InitStructure);/初始化GPIOF9,F102個(gè)讀取輸入電平函數(shù):uint8

4、_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:讀取某個(gè)GPIO的輸入電平。實(shí)際操作的是GPIOx_IDR寄存器。例如:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);/讀取GPIOA.5的輸入電平uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);作用:讀取某組GPIO的輸入電平。實(shí)際操作的是GPIOx_IDR寄存器。例如:GPIO_ReadInputData(GPIOA);/讀取GPIOA組中所有io口輸入電平2個(gè)讀取輸出電平函數(shù):uin

5、t8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:讀取某個(gè)GPIO的輸出電平。實(shí)際操作的是GPIO_ODR寄存器。例如:GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_5);/讀取GPIOA.5的輸出電平uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx);作用:讀取某組GPIO的輸出電平。實(shí)際操作的是GPIO_ODR寄存器。例如:GPIO_ReadOutputData(GPIOA);/讀取GPIOA組中所有io口輸出電平4個(gè)設(shè)置輸出電平函數(shù)

6、:voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:設(shè)置某個(gè)IO口輸出為高電平(1)。實(shí)際操作BSRRL寄存器voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:設(shè)置某個(gè)IO口輸出為低電平(0)。實(shí)際操作的BSRRH寄存器。voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);后

7、兩個(gè)函數(shù)不常用,也是用來設(shè)置IO口輸出電平。端口復(fù)用為復(fù)用功能配置過程-以PA9,PA10配置為用口1為例1、GPIO端口時(shí)鐘使能。RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);2、復(fù)用外設(shè)時(shí)鐘使能。比如你要將端口PA9,PA10復(fù)用為用口,所以要使能用口時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);3、端口模式配置為復(fù)用功能。GPIO_Init()函數(shù)。GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;/復(fù)用功能中斷優(yōu)先級(jí)設(shè)置步驟1、系統(tǒng)

8、運(yùn)行后先設(shè)置中斷優(yōu)先級(jí)分組。調(diào)用函數(shù):voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);整個(gè)系統(tǒng)執(zhí)行過程中,只設(shè)置一次中斷分組。2、針對(duì)每個(gè)中斷,設(shè)置對(duì)應(yīng)的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí):voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct);如果需要掛起/解掛,查看中斷當(dāng)前激活狀態(tài),分別調(diào)用相關(guān)函數(shù)即可。獨(dú)立看門狗操作步驟1、取消寄存器寫保護(hù):IWDG_WriteAccessCmd();2、設(shè)置獨(dú)立看門狗的預(yù)分頻系數(shù),確定時(shí)鐘:IWDG_SetPrescaler();3、設(shè)置看門狗重裝載值,確定溢

9、出時(shí)間IWDG_SetReload();4、使能看門狗IWDG_Enable();5、應(yīng)用程序喂狗:IWDG_ReloadCounter();溢出時(shí)間計(jì)算:Tout=(4x2Aprer)xrlr)/32(M4)在主函數(shù),要設(shè)置中斷優(yōu)先級(jí)分組NVIC_PriorityGroupConfig();delay_init(168);配置時(shí)鐘窗口看門狗配置過程voidWWDG_Init(u8tr,u8wr,u32fprer)1、使能看門狗時(shí)鐘:RCC_APB1PeriphClockCmd();2設(shè)置分頻系數(shù):WWDG_SetPrescaler();3設(shè)置上窗口值:WWDG_SetWindowValue(

10、);4開啟提前喚醒中斷并分組(可選):WWDG_EnableIT();NVIC_Init();WWDG_ClearFlag();/清除提前喚醒標(biāo)志位5使能看門狗:WWDG_Enable();7編寫中斷服務(wù)函數(shù)WWDG_IRQHandler();1)喂狗:WWDG_SetCounter();2)清除標(biāo)志位WWDG_ClearFlag();在主函數(shù),要設(shè)置中斷優(yōu)先級(jí)分組NVIC_PriorityGroupConfig();delay_init(168);配置時(shí)鐘外部中斷STM32F4的每個(gè)IO都可以作為外部中斷輸入。STM32F4的中斷控制器支持22個(gè)外部中斷/事件請(qǐng)求EXTI線015:對(duì)應(yīng)外部I

11、O口的輸入中斷。EXTI線16:連接到PVD輸出。EXTI線17:連接到RTC鬧鐘事件。EXTI線18:連接到USBOTGFS喚醒事件。EXTI線19:連接到以太網(wǎng)喚醒事件。EXTI線20:連接到USBOTGHS(在FS中配置)喚醒事件EXTI線21:連接到RTC入侵和時(shí)間戳事件。EXTI線22:連接到RTC喚醒事件。外部中斷的一般配置步驟:1、使能SYSCFG時(shí)鐘:RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);2、初始化IO口為輸入。GPIO_Init();3、設(shè)置IO口與中斷線的映射關(guān)系。voidSYSCFG_EXTILineCo

12、nfig();4、初始化線上中斷,設(shè)置觸發(fā)條件等。EXTI_Init();5、配置中斷分組(NVIC),并使能中斷。NVIC_Init();6、編寫中斷服務(wù)函數(shù)。EXTIx_IRQHandler();1)清除中斷標(biāo)志位EXTI_ClearITPendingBit();在主函數(shù),要設(shè)置中斷優(yōu)先級(jí)分組NVIC_PriorityGroupConfig();delay_init(168);配置時(shí)鐘串口配置的一般步驟1、串口時(shí)鐘使能:RCC_APBxPeriphClockCmd();GPIO時(shí)鐘使能:RCC_AHB1PeriphClockCmd();2、引腳復(fù)用映射:GPIO_PinAFConfig()

13、;3、GPIO端口模式設(shè)置:GPIO_Init();模式設(shè)置為GPIO_Mode_AF4、串口參數(shù)初始化:USART_Init();5、開啟中斷并且初始化NVIC(如果需要開啟中斷才需要這個(gè)步驟)NVIC_Init();USART_ITConfig();6、使能串口:USART_Cmd();7、編寫中斷處理函數(shù):USARTx_IRQHandler();8、串口數(shù)據(jù)收發(fā):voidUSART_SendData();儂送數(shù)據(jù)至U用口,DRuint16_tUSART_ReceiveData();儂受數(shù)據(jù),從DR讀取接受到的數(shù)據(jù)9、串口傳輸狀態(tài)獲取:FlagStatusUSART_GetFlagStat

14、us();voidUSART_ClearITPendingBit();串口中斷服務(wù)函數(shù)不用清除中斷在主函數(shù),要設(shè)置中斷優(yōu)先級(jí)分組NVIC_PriorityGroupConfig();定時(shí)器中斷實(shí)現(xiàn)步驟voidTimx_init(u8arr,psc);1、能定時(shí)器時(shí)鐘。RCC_APB1PeriphClockCmd();2、初始化定時(shí)器,配置ARR,PSC。TIM_TimeBaseInit();TIM_TIConfig();/使能更新中斷3、開啟定時(shí)器中斷,配置NVIC。NVIC_Init();4、使能定時(shí)器。TIM_Cmd();5、編寫中斷服務(wù)函數(shù)。TIMx_IRQHandler();1)判斷中

15、斷模式TIM_GetTIStatus(TIMx,中斷模式);2)清除標(biāo)志TIM_ClearITPendingBit();在主函數(shù),要設(shè)置中斷優(yōu)先級(jí)分組NVIC_PriorityGroupConfig();delay_init(168);配置時(shí)鐘PWM輸出配置步驟:voidTIM14_PWM_Init(u32arr,u32psc;)1使能定時(shí)器14和相關(guān)IO口時(shí)鐘。使能定時(shí)器14時(shí)鐘:RCC_APB1PeriphClockCmd();使能GPIOF時(shí)鐘:RCC_AHB1PeriphClockCmd();2初始化IO口為復(fù)用功能輸出。函數(shù):GPIO_Init();GPIO_InitStructur

16、e.GPIO_Mode=GPIO_Mode_AF;/復(fù)用功能3GPIOF9復(fù)用映射到定時(shí)器14GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);4、初始化定時(shí)器:ARR,PSC等:TIM_TimeBaseInit();5初始化輸出比較參數(shù):TIM_OC1Init();6使能預(yù)裝載寄存器:TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);7使能自動(dòng)重裝載的預(yù)裝載寄存器允許位TIM_ARRPreloadConfig(TIM14,ENABLE);8使能定時(shí)器TIM_Cmd(TIM14,ENABL

17、E);/TIM149、不斷改變比較值CCRx,達(dá)到不同的占空比效果:TIM_SetCompare1();在主函數(shù),要設(shè)置中斷優(yōu)先級(jí)分組NVIC_PriorityGroupConfig();delay_init(168);配置時(shí)鐘輸入捕獲的一般配置步驟:1、初始化定時(shí)器和通道對(duì)應(yīng)IO的時(shí)鐘。2、初始化IO口,模式為復(fù)用:GPIO_Init();GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;3、設(shè)置引腳復(fù)用映射:GPIO_PinAFConfig();4、初始化定時(shí)器ARR,PSCTIM_TimeBaseInit();5、初始化輸入捕獲通道TIM_ICInit(

18、);6、如果要開啟捕獲中斷,TIM_ITConfig();NVIC_Init();7、使能定時(shí)器:TIM_Cmd();8、編寫中斷服務(wù)函數(shù):TIMx_IRQHandler();RTCRTC日歷配置一般步驟1、使能PWR時(shí)鐘:RCC_APB1PeriphClockCmd();2、使能后備寄存器訪問:PWR_BackupAccessCmd();RCC_LSEConfig(RCC_LSE_ON);/LSE開啟3、配置RTC時(shí)鐘源,使能RTC時(shí)鐘:RCC_RTCCLKConfig();RCC_RTCCLKCmd();如果使用LSE,要打開LSE:RCC_LSEConfig(RCC_LSE_ON);4、初始化RTC(同步/異步分頻系數(shù)和時(shí)鐘格式):RTC_Init();5、設(shè)置時(shí)間:RTC_SetTime();RTC鬧鐘配置一般步驟1、RTC已經(jīng)初始化好相關(guān)參數(shù)。2、關(guān)閉鬧鐘RTC_AlarmCmd(RTC_Alarm_A,DISABLE);3、配置鬧鐘參數(shù)RTC_SetAlarm();4、開啟鬧鐘RTC_AlarmCmd(RTC_Alarm_A,EABLE);5、清除標(biāo)志位RTC_ClearITPendingBit(RTC_IT_ALRA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論