使用外部引脚需要添加GPIO IP核 在GUI里设置总线连接 具体看下GPIO的datasheet
2.中断专门有个中断控制器的IP核 需要添加一个 在中断控制器里面可以设置中断优先级什么的
其配套API函数 可以设置中断服务程序 比如计数器的中断执行计数器中断服务子函数 看门狗执行
看门狗中断服务子程序
keil定时器中断设置时间的方法:
1、配置TMOD确定工作方式
2、设定定时器定时时间,并给给定时器TO赋值 TH0=? TL0=?
注:比如定时器定时时间设置为20Ms=0.02s,且定时器工作在方式一的模式下,即16位定时器由X* 12 / 11059200=0.02得到X=18432,则定时器初值Y=2^16- 18432 = 65536- 18432 = 47104转.化为十六进制就是0xB800则
TH0= 0xB8 TL0= 0x00
3、设置TCON,通过给TRO置1启动定时器T0;
4、判断TCON寄存器的TF0位是否溢出。
1.利用定时器公式计算出TIMx_ARR(计数个数(自动重载寄存器(TIMx_ARR)))和TIMx_psc(分频系数)(例如:72Mhz ARR=9999,PSC=7199)
2.初始化定时器:TIM_TimeBaseInit()
3.打开时钟RCC
4.清除标志位 :TIM_ClearFlag() (时间由高电平到低电平)
5.使能定时器:TIM_Cmd() (打开定时器)
6.判断是否定时完毕:TIM_GetFlagStatus() (判断是否高电平)
例如:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE)//打开TIM6的外设时钟 改时钟在这里改,改成要求的时钟
TIM_TimeBaseStructure.TIM_Prescaler = 4799
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up//向上计数 改计数模式在这里改 改为 TIM_CounterMode_Down 向下计数
TIM_TimeBaseStructure.TIM_Period = 1999//秒数在这里改 0.5秒对应4999 1秒对应9999 两秒对应19999
TIM_TimeBaseInit(TIM7,&TIM_TimeBaseStructure)//这里改为对应的TIM
TIM_ClearFlag(TIM7, TIM_FLAG_Update)//这里改为对应的TIM
TIM_ITConfig(TIM7, TIM_IT_Update,ENABLE)//这里改为对应的TIM使能定时器中断
TIM_Cmd(TIM7, ENABLE)//使能或者失能TIMx外设
TIM_GetFlagStatus(TIM7, TIM_FLAG_Update)//检查指定的TIM标志位设置与否
注意:main.c文件中一定要添加头文件名 #include"stm32f10x.h"
1.设置外部中断初始化函数 :EXTI_Init()
2.打开复用功能时钟(AFIO)(AFIO属于APB2)
3.设置管脚中断函数:GPIO_EXTILineConfig()
4.设置优先级初始化函数NVIC_Config()
5.设置中断信号输入管脚初始化函数:GPIO_con()
6.编写中断服务函数
中断服务函数列表:
1.EXTI0_IRQHandler
2.EXTI2_IRQHandler
3.EXTI3_IRQHandler
4.EXTI4_IRQHandler
5.EXTI9_5_IRQHandler
1.EXTI15_10_IRQHandler
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)