不会吧,参考手册里是这样说的:
软件可以读此位,也可以通过写’0’清除此位,写’1’对此位无影响
所以是可以写0清零的, 实在不行可以通过读相应寄存器清零,如读TIMx_CCRx可以清零CCxIF位
TIM1和TIM8都是高级定时器,在数据手册里面是分开介绍的,可以下载芯片手册查看,我这也有
刚好学到这里。从我了解来看,COM事件是用手动产生的,库里面有个TIM_EventSource函数,用这个函数可产生COM事件。预先将CCXE,CCXNE,OCXM配置好,然后调这个函数产生COM事件。我看到的实例是用SYSTICK定时器产生中断,在这个中断函数中调用TIM_EventSource函数。学习中,不知回答是否正确,请指正。
你看一下STM32的固件说明。
使用其中的一种模式即可。把对应的数据填入对应的寄存器即可。
如果不明白如何写。ST有一个固件的应用说明。你在ST的网站上下载的固件库里面就有对应的实例说明。看一下就知道了。
学会使用资料,比自己摸索要快很多。
解决方法如下:
下面是关于stm32驱动超声波模块的一段代码,有需要的朋友可以复制参考,希望对大家能够有所帮助和启发。
#define HCSRe4_PORT GPIOB
#define HCSRe4_CLK RCC_APB2Periph_GPIOB#define HCSRe4_TRIG GPIo_Pin_8
#define HCSRo4_ECHO GPIO_Pin_9#define TRIG_Send(n) do{
if(n == )
GPIo_ResetBits(HCSRe4_PORT,HCSRe4_TRIG);else if(n == 1)
GPIO_SetBits(HCSRe4_PORT,HCSRe4_TRIG);}while(e)
#define ECHo_Reci GPIO_ReadInputDataBit(GPIOB,HCSRe4_ECHO)void ultrasonicInit(void)
{
GPIo_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphclockCmd ( HCSRe4_CLK,ENABLE);//Io初始化
GPIo_Initstructure.GPTo_Pin = HCSRe4_TRIG;//发送电平引脚GPIO_Initstructure.GPIO_Speed = GPIO_Speed_5OMHz;
GPIO_Initstructure.GPIO_Mode = GPTo_Mode_out_PP;//推挽输出GPIO_Init(HCSRe4_PORT,GPTo_InitStructure);
2e
GPIO_Init(HCSRO4_PORT,GPIO_InitStructure);
21
GPIO_ResetBits(HCSRe4_PORT,HCSRe4_TRIG);
22
GPIo_InitStructure.GPIo_Pin = HCSRe4_ECHO;//返回电平引脚
23
GPIo_Initstructure.GPIo_Mode = GPIo_Mode_IN_FLOATING;//浮空输入
24
GPIo_Init(HCSRe4_PORT,GPIO_Initstructure);
25
GPIO_ResetBits(HCSRO4_PORT,HCSRe4_ECHO);
26
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//生成用于定时器设置的结构体
27
RCC_APB1PeriphclockCmd(RCC_APB1Periph_TIM6,ENABLE);//使能对应RcC时钟
28
//配置定时器基础结构体
29
TIM_DeInit(TIM6);
3e
TIMA_TimeBaseStructure.TIM_Period = (1000-1);//设置在下一个更新事件装入活动的自动重装
31
TTA_TimeBaseStructure.TIM_Prescaler =(72-1);//设置用来作为TIMx时钟频率除数的预分频值
32
TIM_TimeBasestructure.TIM_ClockDivision=TIM_CKD_DIV1;//不分频
33
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_up;//TIM向上计数模式
34
TIM_TimeBaseInit(TIM6,TIM_TimeBaseStructure);//根据TIM_TimeBaseInitStruct中指定
35
TIM_ClearFlag(TIM6,TIM_FLAG_Update);//清除更新中断,免得一打开中断立即产生中断
36
TIM_ITConfig(TIM6,TIM_IT_update,ENABLE);//打开定时器更新中断
37
NVIc_InitTypeDef NVIC_Initstructure;
38
NVIc_PriorityGroupConfig(NVIC_PriorityGroup_2);
39
NVIc_Initstructure.NVIC_IRQChannel = TIM6_IRQn;//选择串口1中断
40
NVIc_InitStructure.NVIc_IRQChannelPreemptionPriority = ;//抢占式中断优先级设置为
本文标签:stm32f730tim1