STM32F7的DMA方式和测频法(与STM21F103不同)

F7的配置思路和F103类似,高级定时器配置细节不一样。F7的高级定时器配置如图

定时器8的Output Compare Channel 4的模式选择retriggerable OPM模式时才有16个trigger信号正确输出,选择toggle on match模式没有输出,其他模式输出的脉冲个数不是16个。

经验证:当AD芯片是ADS8598时,选择retriggerable OPM1,读取到的AD数据会在正确的通道上,如果选择retriggerable OPM2,AD采集的某个通道的信号会出现在前一个信号通道上。

使用STM32F723的测频法与STM32103有所不同。使用两个定时器,一个TIM3用于产生1S的定时,一个用于计数外来的信号值。TIM3和TIM4不采用主从模式。TIM3配置如图:

TIM4的配置如图:时钟源选择外部触发作为时钟,这样可以对外部信号进行计数。

main.c程序关键代码如下:

 HAL_TIM_Base_Start(&htim4);//启动定时器4
 HAL_TIM_Base_Start_IT(&htim3);
 HAL_TIM_Base_Start_IT(&htim4);

it.c程序关键代码如下:

extern uint16_t GRCounter;
uint16_t Last_GRCounter=0;
uint16_t Tim4_out=0;
uint16_t GR_Number=0;
uint16_t GR_Fre=0;
/* USER CODE END 0 */

/* External variables --------------------------------------------------------*/
extern TIM_HandleTypeDef htim3;
extern TIM_HandleTypeDef htim4;
void TIM3_IRQHandler(void)
{
  /* USER CODE BEGIN TIM3_IRQn 0 */
	
	            __HAL_TIM_CLEAR_FLAG(&htim3,TIM_FLAG_UPDATE); //清除TIMx的中断待处理

	            GRCounter=__HAL_TIM_GET_COUNTER(&htim4);//读取定时4对外部脉冲的计数结果
	            __HAL_TIM_SET_COUNTER(&htim4,0);
	          
  /* USER CODE END TIM3_IRQn 0 */
  HAL_TIM_IRQHandler(&htim3);
  /* USER CODE BEGIN TIM3_IRQn 1 */

 
  /* USER CODE END TIM3_IRQn 1 */
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值