机电传动控制上课实验教程 lecture 2TIME.docx
- 文档编号:1742072
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:13
- 大小:1,014.58KB
机电传动控制上课实验教程 lecture 2TIME.docx
《机电传动控制上课实验教程 lecture 2TIME.docx》由会员分享,可在线阅读,更多相关《机电传动控制上课实验教程 lecture 2TIME.docx(13页珍藏版)》请在冰豆网上搜索。
机电传动控制上课实验教程lecture2TIME
1、打开lecture2-TIME
2、检查环境配置
打开TargetOptions:
点击如下图按钮
或者右击Target1选择
(1)选择正确的芯片
Device:
STM32F103VC
(2)输出.hex文件
Output:
SelectFolderforObject选上工程文件里面的OBJ文件。
选上CreateHEXFile
(3)中间文件输出位置正确:
Listing:
选择位置如下图所示:
(4)确认是否已添加头文件
C/C++:
Define中添加USE_STDPERIPH_DRIVER,STM32F10X_MD
IncludePaths如下所示:
(5)选择调试环境
Debug:
Use:
Cortex-M/RJ-Link/J-Trace
(6)添加flash下载算法
Utilities:
Settings:
对应芯片如下所示
点击setting设置为如下所示:
3、文件结构介绍
所建工程文件中,Libraries为固件库,project中存放链接文件(List)和输出文件(Obj),User用来存放工程文件(bsp)和用户代码(main(),application()).
4、查看TIM3.h
5、TIM3.c添加代码
(1)时钟源
由于TIM3挂载在APB1的总线上,虽然APB1的时钟速度最高位36MHZ,但是TIM3的时钟来源并不直接来自于APB1,它们之间还有一个倍频器,当PSC的数值大于1时,其母时钟频率为72MHZ,而定时器自身的时钟频率为72M/PSC,例如当PSC=7200时,定时器的时钟频率为10KHz。
所以定时器的时钟通过该语句来设定:
TIM3->PSC=psc;//设置定时器时钟
(2)定时器的寄存器介绍
控制寄存器1TIMx_CR1:
实验中我们设定:
TIM3->CR1|=0x01;来使能计数器,默认计数为向上计数模式。
手册中对于该模式的介绍:
DMA/中断使能寄存器(TIMx_DIER):
第6位TIE为触发中断使能位,通过将该位置1使能TIMx的中断触发,注意只要是TIMx需要使用中断,该位必须为1.而第0位,则为允许更新中断位,通过置1,来允许由于更新事件而产生的中断。
预分频寄存器(TIMx_PSC):
用于设定预分频psc,从而设定定时器时钟。
④自动重装载寄存器:
用于设定自动加载值arr。
(3)用定时器中断进行延时的计算:
初始化定时器时,我们输入两个参数arr和psc:
TIM3_Init(5000,7200);,arr=5000,psc=7200,则定时器自身的时钟频率为72M/PSC=10000,表示每隔1/10000s=0.0001s定时器计一次数,当定时器计数到arr=5000时产生中断,则计数总时间=arr*0.0001s=0.5s.
将下列代码复制到TIM3.c中:
#include"includes.h"
voidTIM3_Init(u16arr,u16psc)
{
//第一步使能TIM3时钟
RCC->APB1ENR|=1<<1;
//第二步设定计数区重装载值
TIM3->ARR=arr;
//第三步设置预分频
TIM3->PSC=psc;
//第四步允许更新中断
TIM3->DIER|=1<<0;//允许更新中断
//第五步允许触发中断
TIM3->DIER|=1<<6;
//第六步使能定时器3
TIM3->CR1|=0x01;
}
voidTIM3_NVIC_Config(void)
{
NVIC_InitTypeDefNVIC_InitStructure;/*声明嵌套中断结构体*/
/*中断分组*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;/*定时器3*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;/*抢占优先级1*/
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;/*子优先级0*/
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;/*使能*/
NVIC_Init(&NVIC_InitStructure);/*外部中断源配置*/
}
6、在“includes.h”添加到”TIM3.h”(已添加)
7、其中“includes.h”已经添加到“stm32f10x_it.c”文件中
8、在stm32f10x_it.c中添加定时器中断处理代码
(1)功能说明:
LED灯间隔0.5s闪烁一次。
(2)定时器SR寄存器介绍
TIM3->SR&0X0001;表示当SR寄存器的第一位为0时,表示产生了更新中断,程序进入中断服务,更改LED灯的状态。
注意:
中断服务结束后要将状态标志位清零。
将下列代码复制到stm32f10x_it.c中:
voidTIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//产生溢出中断
{
if(LED_Status[1]==0)
{
LED1_OFF;
LED2_OFF;
LED3_OFF;
LED4_OFF;
LED_Status[1]=1;
}
else
{
LED1_ON;
LED2_ON;
LED3_ON;
LED4_ON;
LED_Status[1]=0;
}
}
TIM3->SR&=~(1<<0);//清除中断标志位
}
9、其中“voidTIM3_IRQHandler(void)”函数声明已经添加到“stm32f10x_it.h”文件
10、查看Application.c的内容(Application()没变)
11、查看main.c内容
12、编译下载
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机电传动控制上课实验教程 lecture 2TIME 机电 传动 控制 上课 实验 教程 TIME