STM32F429之定时器

本文介绍了STM32F429微控制器中定时器的配置,包括高级定时器TIM1和TIM8,通用定时器TIM2至TIM5以及TIM9至TIM14,以及基本定时器TIM6和TIM7。详细阐述了如何配置中断优先级,初始化TIM6定时器,设置中断标志以及编写中断服务函数TIM6_DAC_IRQHandler,用于控制LED闪烁。
摘要由CSDN通过智能技术生成

F429共有14个定时器

2个高级   TIM1、TIM8

10个通用   TIM2~TIM5  TIM9~TIM14

2个基本   TM6 、TIM7     只有TIM_Prescaler和TIM_Period

1.配置优先级

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);        中断组为0
    NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn;     中断来源
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;    子优先级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

2.TIM初始化


  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);   初始化时钟

 

STM32F407IGT6单片机 HC-SR501人体红外感应模块(串口屏显示)KEIL软件工程源码, int main(void) { uint8_t state; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); HMI_USARTx_Init(); /* 初始化LED */ LED_GPIO_Init(); HC_SR501_GPIO_Init(); /* 无限循环 */ while (1) { state=HC_SR501_StateRead(); switch(state) { case HC_SR501_LOW: HMI_string_setting("page1.t1.txt=\"无人\""); break; case HC_SR501_HIGH: HMI_string_setting("page1.t1.txt=\"有人\""); break; } } } /** * 函数功能: 向串口屏发送数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_value_setting(const char *val_str,uint32_t value) { uint8_t tmp_str[30]={0}; uint8_t i; sprintf((char *)tmp_str,"%s=%d",val_str,value); for(i=0;i<strlen((char *)tmp_str);++i) { HMI_USARTx->DR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } /** * 函数功能: 向串口屏发送浮点数据 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void HMI_string_setting(const char *val_str) { uint8_t tmp_str[50]={0}; uint8_t i; sprintf((char *)tmp_str,val_str); for(i=0;i<strlen((char *)tmp_str);++i) { HMI_USARTx->DR=tmp_str[i]; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); } HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); HMI_USARTx->DR=0xFF; while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值