簡(jiǎn)介
CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基于RISC-V開(kāi)源指令集設(shè)計(jì)。 片上集成了時(shí)鐘安全機(jī)制、多級(jí)電源管理、通用DMA控制器。 此系列具有1路USB2.0主機(jī)/設(shè)備接口、多通道12位ADC轉(zhuǎn)換模塊、多通道TouchKey、多組定時(shí)器、多路IIC/USART/SPI接口等豐富的外設(shè)資源。
本章教程通過(guò)CH32V103開(kāi)發(fā)板板載兩個(gè)LED燈顯示程序運(yùn)行狀態(tài),具體情況如下:
(1)串口調(diào)式助手大約每隔500ms打印一次”Enter interrupt“;
(2)開(kāi)發(fā)板上LED1與LED2不停閃爍,其中,LED1閃爍較快,大約為100ms一次; LED2閃爍較慢,大約為500ms閃爍一次。
1、TIM簡(jiǎn)介及相關(guān)函數(shù)介紹
CH32V103定時(shí)器包含1個(gè)高級(jí)16位定時(shí)器、3個(gè)通用16位定時(shí)器,以及2個(gè)看門(mén)狗定時(shí)器和1個(gè)系統(tǒng)時(shí)基定時(shí)器。
高級(jí)控制定時(shí)器(TIM1)是一個(gè) 16 位的自動(dòng)裝載計(jì)數(shù)器,具有可編程的預(yù)分頻器。 除了完整的通用定時(shí)器功能外, 可以被看成是分配到 6 個(gè)通道的三相 PWM 發(fā)生器, 具有帶死區(qū)插入的互補(bǔ) PWM 輸出功能,允許在指定數(shù)目的計(jì)數(shù)器周期之后更新定時(shí)器進(jìn)行重復(fù)計(jì)數(shù)周期,剎車(chē)功能等。 高級(jí)控制定時(shí)器的很多功能都與通用定時(shí)器相同,內(nèi)部結(jié)構(gòu)也相同,因此高級(jí)控制定時(shí)器可以通過(guò)定時(shí)器鏈接功能與 TIM 定時(shí)器協(xié)同操作,提供同步或事件鏈接功能。
通用定時(shí)器(TIM2、TIM3和TIM4),其可同步運(yùn)行,每個(gè)定時(shí)器都有一個(gè) 16 位的自動(dòng)裝載遞加/遞減計(jì)數(shù)器、一個(gè)可編程的 16 位預(yù)分頻器和 4 個(gè)獨(dú)立的通道,每個(gè)通道都可用于輸入捕獲、輸出比較、 PWM 生成和單脈沖模式輸出。 其能通過(guò)定時(shí)器鏈接功能與高級(jí)控制定時(shí)器共同工作,提供同步或事件鏈接功能。 在調(diào)試模式下,計(jì)數(shù)器可以被凍結(jié),同時(shí) PWM 輸出被禁止,從而切斷由這些輸出所控制的開(kāi)關(guān)。 任意通用定時(shí)器都能用于產(chǎn)生 PWM 輸出。 每個(gè)定時(shí)器都有獨(dú)立的 DMA 請(qǐng)求機(jī)制。 這些定時(shí)器還能夠處理增量編碼器的信號(hào),也能處理 1 至 3 個(gè)霍爾傳感器的數(shù)字輸出。
系統(tǒng)時(shí)基定時(shí)器(SysTick),這是內(nèi)核控制器自帶的一個(gè)定時(shí)器,用于產(chǎn)生 SYSTICK 異常,可專用于實(shí)時(shí)操作系統(tǒng),為系統(tǒng)提供“心跳”節(jié)律,也可當(dāng)成一個(gè)標(biāo)準(zhǔn)的64位遞增計(jì)數(shù)器。 以AHB時(shí)鐘的8分頻為基準(zhǔn)時(shí)鐘源。 當(dāng)計(jì)數(shù)器遞增到設(shè)置比較值時(shí),產(chǎn)生一個(gè)可屏蔽系統(tǒng)中斷。 關(guān)于2個(gè)看門(mén)狗定時(shí)器,在前面教程有過(guò)介紹,在此不做過(guò)多贅述。
關(guān)于CH32V103定時(shí)器具體信息及其相關(guān)功能和實(shí)現(xiàn)等,可參考CH32V103數(shù)據(jù)手冊(cè)和應(yīng)用手冊(cè)。 本章教程主要通過(guò)CH32V103通用定時(shí)器TIM3編寫(xiě)一個(gè)定時(shí)器中斷程序,并下載到開(kāi)發(fā)板進(jìn)行驗(yàn)證,程序編寫(xiě)所需相關(guān)函數(shù)在庫(kù)函數(shù)中進(jìn)行調(diào)用,庫(kù)函數(shù)文件中函數(shù)介紹如下:
1.1、無(wú)效TIM_DeInit(TIM_TypeDef* TIMx)
功 能:將TIMx外圍寄存器初始化為其默認(rèn)重置值。
輸 入:無(wú)
1.2、無(wú)效TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
功 能:根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx時(shí)基單元外圍設(shè)備。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TimeBaseInitStruct:指向TIM_TimeBaseInitTypeDef結(jié)構(gòu)的指針。
1.3、無(wú)效TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)
功 能:根據(jù)TIM_OCInitStruct中指定的參數(shù)初始化TIMx Channel1。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_OCInitStruct:指向TIM_OCInitTypeDef結(jié)構(gòu)的指針。
1.4、無(wú)效TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
功 能:根據(jù)TIM_ICInitStruct中指定的參數(shù)初始化TIM外圍設(shè)備。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_ICInitStruct:指向TIM_ICInitTypeDef結(jié)構(gòu)的指針。
1.5、無(wú)效TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)
功 能:根據(jù)TIM結(jié)構(gòu)中的指定參數(shù)配置TIM外圍設(shè)備,以測(cè)量外部PWM信號(hào)。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_ICInitStruct:指向TIM_ICInitTypeDef結(jié)構(gòu)的指針。
1.6、無(wú)效TIM_BDTRConfig(TIM_TypeDef* TIMx,TIM_BDTRInitTypeDef *TIM_BDTRInitStruct)
功 能:配置:中斷特性、死區(qū)時(shí)間、鎖定級(jí)別、OSSI、OSSR狀態(tài)和AOE(自動(dòng)輸出啟用)。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_BDTRInitStruct:指向TIM_BDTRInitTypeDef結(jié)構(gòu)的指針。
1.7、無(wú)效TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
功 能:用默認(rèn)值填充每個(gè)TIM_TimeBaseInitStruct成員。
輸 入:TimeBaseInitStruct:指向TIM_TimeBaseInitTypeDef結(jié)構(gòu)的指針。
1.8、無(wú)效TIM_OCStructInit(TIM_OCInitTypeDef*TIM_OCInitStruct)
功 能:用默認(rèn)值填充每個(gè)TIM_OCInitStruct成員。
輸 入:TIM_OCInitStruct:指向TIM_OCInitTypeDef結(jié)構(gòu)的指針。
1.9、無(wú)效TIM_ICStructInit(TIM_ICInitTypeDef*TIM_ICInitStruct)
功 能:用其默認(rèn)值填充每個(gè)TIM_ICInitStruct成員。
輸 入:TIM_ICInitStruct:指向TIM_ICInitTypeDef結(jié)構(gòu)的指針。
1.10、無(wú)效TIM_BDTRStructInit(TIM_BDTRInitTypeDef*TIM_BDTRInitStruct)
功 能:用默認(rèn)值填充每個(gè)TIM_BDTRInitStruct成員。
輸 入:TIM_BDTRInitStruct:指向TIM_BDTRInitTypeDef結(jié)構(gòu)的指針。
1.11、void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
功 能:?jiǎn)⒂没蚪弥付ǖ腡IM外圍設(shè)備。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; NewState:啟用或禁用。
1.12、void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)
功 能:?jiǎn)⒂没蚪肨IM外圍設(shè)備主輸出。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; NewState:啟用或禁用。
1.13、void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)
功 能:?jiǎn)⒂没蚪弥付ǖ腡IM中斷。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_IT:指定要啟用或禁用的TIM中斷源; NewState:啟用或禁用。
1.14、無(wú)效TIM_GenerateEvent(TIM_TypeDef* TIMx,uint16_t TIM_EventSource)
功 能:將TIMx外圍寄存器初始化為其默認(rèn)重置值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_EventSource:指定事件源。
1.15、無(wú)效TIM_DMAConfig(TIM_TypeDef* TIMx、uint16_t TIM_DMABase、uint16_t TIM_DMABurstLength)
功 能:配置TIMx的DMA接口。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_DMABase:DMA基址; TIM_DMABurstLength:DMA突發(fā)長(zhǎng)度。
1.16、void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState)
功 能:?jiǎn)⒂没蚪肨IMx的DMA請(qǐng)求。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_DMASource:指定DMA請(qǐng)求源; NewState:啟用或禁用。
1.17、無(wú)效TIM_InternalClockConfig(TIM_TypeDef* TIMx)
功 能:配置TIMx內(nèi)部時(shí)鐘。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備。
1.18、無(wú)效TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx,uint16_t TIM_InputTriggerSource)
功 能:將TIMx內(nèi)部觸發(fā)器配置為外部時(shí)鐘。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_InputTriggerSource:觸發(fā)源。
1.19、無(wú)效TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx、uint16_t TIM_TIxExternalCLKSource、uint16_t TIM_ICPolarity uint16_t ICFilter)
功 能:將TIMx觸發(fā)器配置為外部時(shí)鐘。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_TIxExternalCLKSource: 觸發(fā)器源; ICFilter:指定過(guò)濾器值。 此參數(shù)的值必須介于0x0和0xF之間。
1.20、void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter)
功 能:配置外部時(shí)鐘模式1。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_ExtTRGPrescaler:外部觸發(fā)預(yù)分頻器; TIM_ExtTRGPolarity:外部觸發(fā)極性; ExtTRGFilter:外部觸發(fā)器篩選器。
1.21、void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter)
功 能:配置TIMx外部觸發(fā)器(ETR)。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_ExtTRGPrescaler:外部觸發(fā)預(yù)分頻器; TIM_ExtTRGPolarity:外部觸發(fā)極性; ExtTRGFilter:外部觸發(fā)器篩選器。
1.22、無(wú)效TIM_PrescalerConfig(TIM_TypeDef* TIMx、uint16_t預(yù)分頻器、uint16_t TIM_PSCReloadMode)
功 能:配置TIMx預(yù)分頻器。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; Prescaler:指定預(yù)分頻器寄存器值; TIM_PSCReloadMode:指定TIM預(yù)分頻器重新加載模式。
1.23、無(wú)效TIM_CounterModeConfig(TIM_TypeDef* TIMx,uint16_t TIM_CounterMode)
功 能:指定要使用的TIMx計(jì)數(shù)器模式。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_CounterMode:指定要使用的計(jì)數(shù)器模式。
1.24、無(wú)效TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource)
功 能:選擇輸入觸發(fā)源。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_InputTriggerSource:輸入觸發(fā)源。
1.25、void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity)
功 能:配置TIMx編碼器接口。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_EncoderMode:指定TIMx編碼器模式;TIM_IC1Polarity:指定IC1極性;TIM_IC2Polarity:指定IC2極性。
1.26、void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction)
功 能:強(qiáng)制TIMx輸出1波形為激活或非激活電平。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_ForcedAction:指定要設(shè)置為輸出波形的強(qiáng)制操作。
1.27、void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState)
功 能:在ARR上啟用或禁用TIMx外設(shè)預(yù)加載寄存器。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;NewState:啟用或禁用。
1.28、void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState)
功 能:選擇TIM外圍換向事件。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;NewState:啟用或禁用。
1.29、void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState)
功 能:選擇TIMx外圍捕獲比較DMA源。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;NewState:啟用或禁用。
1.30、void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState)
功 能:設(shè)置或重置TIM外圍捕獲比較預(yù)加載控制位。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;NewState:啟用或禁用。
1.31、void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)
功 能:?jiǎn)⒂没蚪肅CR1上的TIMx外圍預(yù)加載寄存器。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_OCPreload:TIMx外圍預(yù)加載寄存器的新?tīng)顟B(tài)。
1.32、void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast)
功 能:配置TIMx輸出比較1快速功能。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_OCFast:輸出比較快速啟用位的新?tīng)顟B(tài)。
1.33、void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear)
功 能:清除或保護(hù)外部事件上的OCREF1信號(hào)。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_OCClear:輸出比較清除啟用位的新?tīng)顟B(tài)。
1.34、void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity)
功 能:配置TIMx通道1極性。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_OCPolarity:指定OC1極性。
1.35、void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity)
功 能:配置TIMx通道1極性。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_OCNPolarity:指定OC1N極性。
1.36、無(wú)效TIM_CCxCmd(TIM_TypeDef* TIMx、uint16_t TIM_Channel、uint16_t TIM_CCx)
功 能:?jiǎn)⒂没蚪肨IM捕獲比較通道x。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_Channel:指定TIM通道; TIM_CCx:指定TIM信道CCxE位的新?tīng)顟B(tài)。
1.37、無(wú)效TIM_CCxNCmd(TIM_TypeDef* TIMx、uint16_t TIM_Channel、uint16_t TIM_CCxN)
功 能:?jiǎn)⒂没蚪肨IM捕獲比較通道xN。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_Channel:指定TIM通道; TIM_CCxN:指定TIM信道CCxNE位的新?tīng)顟B(tài)。
1.38、無(wú)效TIM_SelectOCxM(TIM_TypeDef* TIMx、uint16_t TIM_Channel、uint16_t TIM_OCMode)
功 能:選擇TIM輸出比較模式。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; TIM_Channel:指定TIM通道; TIM_OCMODE:指定TIM輸出比較模式。
1.39、無(wú)效TIM_UpdateDisableConfig(TIM_TypeDef* TIMx,函數(shù)狀態(tài)新?tīng)顟B(tài))
功 能:?jiǎn)⒂没蚪肨IMx更新事件。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備; NewState:啟用或禁用。
1.40、無(wú)效TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource)
功 能:配置TIMx更新請(qǐng)求中斷源。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_UpdateSource:指定更新源。
1.41、void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState)
功 能:?jiǎn)⒂没蚪肨IMx的霍爾傳感器接口。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;NewState:啟用或禁用。
1.42、void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode)
功 能:選擇TIMx的單脈沖模式。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_OPMode:指定要使用的OPM模式。
1.43、void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource)
功 能:選擇TIMx觸發(fā)器輸出模式。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_TRGOSource:指定觸發(fā)器輸出源。
1.44、void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode)
功 能:選擇TIMx從機(jī)模式。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_SlaveMode:指定定時(shí)器從模式。
1.45、void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode)
功 能:設(shè)置或重置TIMx主/從模式。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_MasterSlaveMode:指定定時(shí)器主從模式。
1.46、void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter)
功 能:設(shè)置TIMx計(jì)數(shù)器寄存器值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;Counter:指定計(jì)數(shù)器寄存器的新值。
1.47、void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload)
功 能:設(shè)置TIMx自動(dòng)重新加載寄存器值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;Autoreload:指定Autoreload寄存器的新值。
1.48、void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1)
功 能:設(shè)置TIMx捕獲比較1寄存器值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;Compare1:指定捕獲Compare1寄存器的新值。
1.49、void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC)
功 能:設(shè)置TIMx輸入捕捉1預(yù)分頻器。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_ICPSC:指定輸入Capture1預(yù)分頻器的新值。
1.50、void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD)
功 能:設(shè)置TIMx時(shí)鐘刻度值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_CKD:指定時(shí)鐘分頻值。
1.51、uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx)
功 能:獲取TIMx輸入捕獲1的值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備。
1.52、uint16_t TIM_GetCounter(TIM_TypeDef* TIMx)
功 能:獲取TIMx計(jì)數(shù)器值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備。
1.53、uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx)
功 能:獲取TIMx預(yù)分頻器值。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備。
1.54、FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)
功 能:檢查是否設(shè)置了指定的TIM標(biāo)志。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_FLAG:指定要檢查的標(biāo)志。
1.55、void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG)
功 能:清除TIMx的掛起標(biāo)志。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_FLAG:指定要清除的標(biāo)志位。
1.56、ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT)
功 能:檢查T(mén)IM中斷是否發(fā)生。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_IT:指定要檢查的TIM中斷源。
1.57、void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
功 能:清除TIMx的中斷掛起的位。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_IT:指定要清除的掛起位。
1.58、static void TI1_Config(TIM_TypeDef* TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection,uint16_t TIM_ICFilter)
功 能:將TI1配置為輸入。
輸 入:TIMx:其中x可以是1到4來(lái)選擇TIM外圍設(shè)備;TIM_ICPolarity:輸入極性;TIM_ICSelection:指定要使用的輸入;TIM_ICFilter:指定輸入捕獲篩選器。
以上函數(shù)均為庫(kù)函數(shù)內(nèi)部函數(shù),在進(jìn)行使用時(shí)只需在程序中進(jìn)行調(diào)用即可。
2、硬件設(shè)計(jì)
本章教程通過(guò)定時(shí)器中斷控制LED燈閃爍,其中,定時(shí)器為CH32V103內(nèi)部資源,無(wú)需進(jìn)行硬件設(shè)計(jì),只需進(jìn)行LED連接即可,LED與GPIO引腳連接方式如下:
LED1與PA0連接;
LED2與PA1連接。
3、軟件設(shè)計(jì)
本章教程主要通過(guò)定時(shí)器中斷控制LED燈閃爍,其中,led.c文件與led.h文件前面GPIO教程中已講解,在此不再介紹,本章主要介紹time.h文件、time.c文件以及main.c文件,具體程序如下:
time.h文件
time.h文件主要是定時(shí)器初始化配置函數(shù)的聲明。
time.c文件
4、下載驗(yàn)證
將編譯好的程序下載到開(kāi)發(fā)板并復(fù)位,可以看到開(kāi)發(fā)板兩個(gè)LED燈閃爍,其中,LED1閃爍較快,LED2閃爍較慢。同時(shí),串口調(diào)試助手打印顯示:Enter interrupt,表示程序進(jìn)入中斷,大約500ms打印一次。串口調(diào)試助手打印顯示如下:
-
led
+關(guān)注
關(guān)注
242文章
23840瀏覽量
673955 -
mcu
+關(guān)注
關(guān)注
146文章
17978瀏覽量
366675 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
118882 -
RISC-V
+關(guān)注
關(guān)注
46文章
2563瀏覽量
48794 -
CH32V103
+關(guān)注
關(guān)注
1文章
13瀏覽量
1238 -
ch32
+關(guān)注
關(guān)注
0文章
73瀏覽量
901
發(fā)布評(píng)論請(qǐng)先 登錄
如何使用STM32F103通用定時(shí)器中斷來(lái)實(shí)現(xiàn)LED燈閃爍呢
CH32V103基礎(chǔ)教程7-定時(shí)器中斷
CH32V103基礎(chǔ)教程8-PWM輸出
基于STM32單片機(jī)的TIM定時(shí)器中斷控制不同燈閃爍
【MCU】基于STM32CubeMX定時(shí)器中斷實(shí)現(xiàn)LED閃爍

RISC-V MCU應(yīng)用開(kāi)發(fā)教程之CH32V103

STM32 CubeMX學(xué)習(xí):3. 定時(shí)器閃爍LED

基于CH32V103系列MCU點(diǎn)亮LED

基于CH32V103系列MCU的觸摸按鍵檢測(cè)

評(píng)論