国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F103定時器引腳重定義功能問題處理

這篇具有很好參考價值的文章主要介紹了STM32F103定時器引腳重定義功能問題處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、概要

在一個項目中,使用STM32F103RCT6單片機,定時器引腳使用的PC6,PC6默認復用定時器為TIM8_CH1,但是由于其他原因,不能使用TIM8_CH1,因此需要使用其重定義功能TIM3_CH1,本文分享了本人在該項目中定時器TIM3引腳復用功能重定義的一些問題及解決過程,希望對大家能有幫助。

2、背景

在一個激光器產(chǎn)品控制項目中,需要一個占空比和頻率均可調的PWM對激光進行調制,硬件工程師選用的單片機為STM32F103RCT6,將該PWM端口設計為PC6,在做程序設計時發(fā)現(xiàn),該端口的默認復用定時器為TIM8_CH1,但是TIM8有其他用途,不能使用,好在PC6有引腳重定義功能,可將TIM3_CH1重定義到該引腳使用。

STM32F103定時器引腳重定義功能問題處理

?

3、解決過程

本人一直使用HAL庫開發(fā)STM32單片機程序,之前未使用過引腳重定義功能,因此上網(wǎng)查了些資料,使用引腳重定義功能時,使用HAL庫的引腳重定義功能使能函數(shù)即可,TIM3的全部引腳重定義功能函數(shù)為stm32f1xx_hal_gpio_ex.h頭文件內宏定義的__HAL_AFIO_REMAP_TIM3_ENABLE(),具體如下:

/**
  * @brief Enable the remapping of TIM3 alternate function channels 1 to 4
  * @note  ENABLE: Full remap     (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9)
  * @note  TIM3_ETR on PE0 is not re-mapped.
  * @retval None
  */
#define __HAL_AFIO_REMAP_TIM3_ENABLE()  do{ CLEAR_BIT(AFIO->MAPR, AFIO_MAPR_TIM3_REMAP);         \
                                            SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM3_REMAP_FULLREMAP); \
                                          }while(0U)

但是在定時器引腳配置函數(shù)中調用該函數(shù),配置后還是不能使用,具體的GPIO配置如下,(只列出GPIO配置,PWM配置未列出)

/**
  * @brief  定時器GPIO外設配置
  * @param  無
  * @retval 無
  */
static void TIMx_GPIO_Config(void) 
{
	GPIO_InitTypeDef GPIO_InitStruct;
 

	/* 通用定時器GPIO外設時鐘使能 */
	__HAL_RCC_GPIOC_CLK_ENABLE();
	__HAL_RCC_GPIOB_CLK_ENABLE();
	
	/*TIM3_CH1使用的PC6引腳,需重定義引腳功能*/
	__HAL_AFIO_REMAP_TIM3_ENABLE();
	

	/*TIM3_CH1功能引腳IO初始化*/
	GPIO_InitStruct.Pin = GPIO_PIN_6;	//引腳
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;	//模式為復用推挽輸出
	GPIO_InitStruct.Pull = GPIO_PULLDOWN;	//下拉
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;	//高速
	HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);	//PC6初始化
	
	/*TIM4_CH1功能引腳IO初始化*/
	GPIO_InitStruct.Pin = GPIO_PIN_6;	//引腳
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);	//PB6初始化
	
}

這樣配置之后,TIM3_CH1還是無法正常使用,即PC6引腳無響應配置PWM輸出,但是一起配置的默認復用功能的PB6引腳的TIM4_CH1引腳PWM正常。

后來又改變__HAL_AFIO_REMAP_TIM3_ENABLE()位置等等,折騰了好多次,還是不行,后來甚至懷疑是不是芯片的內部硬件故障,重新更換板子,還是不行。

再后來也網(wǎng)上查了查,還是沒有解決,然后就重頭來,重新翻看STM32F1的參考手冊,終于找到了問題原因。

引腳重定義功能配置的是復用重映射和調試I/O配置寄存器(AFIO_MAPR),而手冊中明確注明,對寄存器 AFIO_EVCR , AFIO_MAPR 和 AFIO_EXTICRX 進行讀寫操作前,應當首先打開 AFIO
的時鐘。

STM32F103定時器引腳重定義功能問題處理

因此在HAL庫中找到開啟AFIO時鐘的函數(shù)__HAL_RCC_AFIO_CLK_ENABLE(),在__HAL_AFIO_REMAP_TIM3_ENABLE()之前開啟時鐘,重新配置后PC6輸出PWM正常,最終的TIM3_CH1的GPIO配置如下:

/**
  * @brief  定時器GPIO外設配置
  * @param  無
  * @retval 無
  */
static void TIMx_GPIO_Config(void) 
{
	GPIO_InitTypeDef GPIO_InitStruct;
 

	/* 通用定時器GPIO外設時鐘使能 */
	__HAL_RCC_GPIOC_CLK_ENABLE();
	__HAL_RCC_GPIOB_CLK_ENABLE();
	
	/*使用重定義引腳功能之前需打開AFIO時鐘*/
	__HAL_RCC_AFIO_CLK_ENABLE();
	/*TIM3_CH1使用的PC6引腳,需重定義引腳功能*/
	__HAL_AFIO_REMAP_TIM3_ENABLE();
	

	/*TIM3_CH1功能引腳IO初始化*/
	GPIO_InitStruct.Pin = GPIO_PIN_6;	//引腳
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;	//模式為復用推挽輸出
	GPIO_InitStruct.Pull = GPIO_PULLDOWN;	//下拉
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;	//高速
	HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);	//PC6初始化
	
	/*TIM4_CH1功能引腳IO初始化*/
	GPIO_InitStruct.Pin = GPIO_PIN_6;	//引腳
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);	//PB6初始化
	
}

4、小結

遇到問題上網(wǎng)查,如果有同樣的問題可能會比較快速解決,但是如果找不到同樣的問題,翻翻數(shù)據(jù)手冊和參考手冊可能更有利于問題快速解決。

官方資料是個好東西,后續(xù)還是要多翻翻參考手冊和HAL庫使用說明,加深印象,溫故而知新。文章來源地址http://www.zghlxwxcb.cn/news/detail-496107.html

到了這里,關于STM32F103定時器引腳重定義功能問題處理的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32F103:ADC采樣——定時器觸發(fā)+DMA傳輸

    實現(xiàn)ADC多通道采樣,采用DMA傳輸,采樣由定時器觸發(fā) 初始化代碼:

    2024年02月14日
    瀏覽(27)
  • 【單片機】STM32單片機的各個定時器的定時中斷程序,標準庫,STM32F103

    【單片機】STM32單片機的各個定時器的定時中斷程序,標準庫,STM32F103

    高級定時器和普通定時器的區(qū)別(https://zhuanlan.zhihu.com/p/557896041): TIM1是高級定時器,使用的時鐘總線是RCC_APB2Periph_TIM1,和普通定時器不一樣。 timer.c timer.h 調用 timer.c timer.h 調用 timer.c timer.h 調用 timer.c timer.h 調用 timer.c timer.h 調用

    2024年02月07日
    瀏覽(27)
  • 基于stm32f103c8t6的定時器詳解(持續(xù)更新)

    基于stm32f103c8t6的定時器詳解(持續(xù)更新)

    先聲明:stm32f103c8t6中沒有基本定時器、只有TIM1-TIM4:分別是高級定時器和通用定時器(對照下圖請自行閱讀stm32f103x的datasheet) 1、定時器功能:定時、輸出比較、輸入捕獲、互補輸出,其中基本定時器只有定時功能、通用定時器只沒有互補輸出功能、高級定時器具有所有功能

    2023年04月24日
    瀏覽(28)
  • 2.基于正點原子STM32F103的定時器中斷實驗(HAL庫實現(xiàn))(cubeMX)

    2.基于正點原子STM32F103的定時器中斷實驗(HAL庫實現(xiàn))(cubeMX)

    ? 基本上每一款MCU都會配備定時器這個外設,STM32 的每個通用定時器都是完全獨立的,沒有互相共享的任何資源。 同樣,STM32F1系列的定時器功能也很強大,包括: TIM1和TIM8兩個高級定時器; TIM2~TIM5是個通用寄存器; TIM7,TIM8,兩個基本定時器。 由于本次實驗適用于新手入門

    2023年04月26日
    瀏覽(27)
  • 【單片機】STM32單片機,定時器的輸入捕獲,基于捕獲的頻率計,STM32F103

    【單片機】STM32單片機,定時器的輸入捕獲,基于捕獲的頻率計,STM32F103

    下面的定時器都具有輸入捕獲能力: 查看另一篇文章:https://qq742971636.blog.csdn.net/article/details/131471539 外部計數(shù)頻率計的缺點:需要兩個定時器配合,最高能測量的頻率是否有限制我沒具體嘗試。 基于捕獲的頻率計的缺點:最高能測量的頻率有限制。 TIM3_CH1 PWM PA6 10KHZ。 輸入

    2024年02月14日
    瀏覽(26)
  • STM32F103RCT6開發(fā)板M3單片機教程06--定時器中斷

    STM32F103RCT6開發(fā)板M3單片機教程06--定時器中斷

    除非特別說明,本章節(jié)描述的模塊應用于整個 STM32F103xx 微控制器系列,因為我們使用是 STM32F103RCT6開發(fā)板是mini最小系統(tǒng)板。 本教程使用是( 光明谷SUN_STM32mini開發(fā)板 ) ? 首先了解一下是STM32F10X定時器(Timer) ? 注: 小容量產(chǎn)品是指閃存存儲器容量在16K至32K字節(jié)之間的STM32F101

    2024年02月04日
    瀏覽(99)
  • 基于STM32F103C8T6單片機的1秒定時器設計與應用

    標題:基于STM32F103C8T6單片機的1秒定時器設計與應用 摘要: 本文主要探討了如何在STM32F103C8T6微控制器上利用內部定時器實現(xiàn)精確的1秒鐘定時功能,并通過實際項目實施,驗證其穩(wěn)定性和可靠性。首先介紹了STM32F103C8T6單片機的特性及其定時器資源,然后詳細闡述了基于TIMx(

    2024年01月18日
    瀏覽(27)
  • 基于STM32F103C8T6的端口重映射及定時器輸出PWM控制

    基于STM32F103C8T6的端口重映射及定時器輸出PWM控制

    #一、端口重映射原理及部分/完全重映射 #二、端口重映射的配置 #三、PWM控制 ##1、通用定時器輸出PWM ##2、PWM的工作原理 ##3、PWM的內部運作機制 ##4、PWM的模式 ##5、自動加載的預載寄存器 #四、定時器輸出PWM結構體及庫函數(shù)的配置 #五、項目硬件 #六、項目代碼 一、端口重映射

    2024年02月13日
    瀏覽(22)
  • GD32F103x 定時器

    GD32F103x 定時器

    STM32的定時器主要分為三種: 高級定時器、通用定時器、基本定時器 。 即:高級定時器具有捕獲/比較通道和互補輸出,死區(qū)時間,通用定時器只有捕獲/比較通道,基本定時器沒有以上兩者。? 1. 基本定時器 1.時鐘源 時鐘源來自RCC的CK_TIMER,就是內部時鐘(CK_INT)直接經(jīng)過控

    2024年02月07日
    瀏覽(21)
  • STM32F103C8T6定時器實現(xiàn)led的周期閃爍及PWM實現(xiàn)流水燈

    STM32F103C8T6定時器實現(xiàn)led的周期閃爍及PWM實現(xiàn)流水燈

    通過定時器Timer方式實現(xiàn)時間的精準控制,相當于給CPU上了一個鬧鐘,CPU平時處理其它任務,當定時時間到了以后,處理定時相關的任務。請設置一個5秒的定時器,每隔5秒從串口發(fā)送“hello windows!”;同時設置一個2秒的定時器,讓LED等周期性地閃爍。 使用TIM3和TIM4,分別輸

    2024年01月23日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包