[评测分享]
【灵动Motor-DK电机控制板】-03-定时器测试
#板卡评测
3482 人阅读
|
1 人回复
|
2023-07-24
TA的每日心情 | 开心 2025-9-22 14:13 |
|---|
签到天数: 335 天 连续签到: 1 天 [LV.8]以坛为家I
状元
- 积分
- 8310

|
今天抽空测试了一下定时器,看定时器的时候我们先来看看mm32的时钟树
可以通过数据手册看到,TIM1的最大时钟是60M,在硬件处理上芯片没有设计外部时钟,所以可以判定芯片使用的是内部时钟,我们这里就不做修改了。
在说定时器程序的时候,我们来看看点灯的电路设计。
这里的4.7K的电阻着实没有看清楚是啥用意……拍视屏的时候就比较恼火,这个灯到底是亮了呢还是没亮,从考虑到节能的方向么?
然后我们开始今天的代码分享吧,主函数是这个开始,主函数很简单。
- #include "Delay.h"
- #include "DRV_TIM.h"
- int main(void)
- {
- InitDelay();
- LED_Init();
- TIM1_Init( );
- while(1)
- {
-
- }
- }
复制代码 然后就是定时器的代码了,我们设定为1ms 中断一次,1s改变一次灯的状态
- #include "DRV_TIM.h"
- unsigned TimeCount=0;
- void TIM1_Init(void)
- {
- NVIC_InitTypeDef NVIC_InitStruct;
- RCC_ClocksTypeDef RCC_Clocks;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
- RCC_GetClocksFreq(&RCC_Clocks);//--获取当前时钟--
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM1, ENABLE);
- TIM_TimeBaseStructInit(&TIM_TimeBaseInitStruct);
- TIM_TimeBaseInitStruct.TIM_Prescaler = (60);//--设置分频--
- TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInitStruct.TIM_Period = (1000 - 1);
- TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_Div1;
- TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;
- TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStruct);
- TIM_ClearFlag(TIM1, TIM_FLAG_Update);
- TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);
- NVIC_InitStruct.NVIC_IRQChannel = TIM1_BRK_UP_TRG_COM_IRQn;
- NVIC_InitStruct.NVIC_IRQChannelPriority = 0x01;
- NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStruct);
- TIM_Cmd(TIM1, ENABLE);
- }
- void TIM1_BRK_UP_TRG_COM_IRQHandler(void)
- {
- if (SET == TIM_GetITStatus(TIM1, TIM_IT_Update))
- {
-
- TimeCount++;
- if(TimeCount==1000)
- {
- TimeCount=0;
- GPIO_IO_Toggle(GPIOB,GPIO_Pin_9);
- }
- TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
- }
- }
复制代码
然后,视频就不发了,因为闪灯结果都一样,大家可以下载代码试试看。
代码如下:
|
|
|
|
|
|
|
|
|
TA的每日心情 | 开心 2025-9-22 14:13 |
|---|
签到天数: 498 天 连续签到: 1 天 [LV.9]以坛为家II
状元
- 积分
- 7130
|
沙发
yangjiaxu
发表于 2023-7-28 09:30:43
|
只看该作者
|
4.7K的话,灯亮度估计不会很刺眼,可能是这么考虑的吧 |
|
|
|
|
|
|
|
|