历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2018年09月16日 | STM32F103之实验2控制1个电机并采用编码器读取电机转速

2018-09-16 来源:eefocus

在实验1的电机驱动基础上,这里补充编码器测速的程序部分

#include "encoder.h"
#include "led.h"
///TIM4 编码器输入,TIM4_CH1作A相,TIM4_CH2作B相GPIO_Pin_6|GPIO_Pin_7;

TIM_ICInitTypeDef  TIM_ICInitStructure;
void TIM4_Encoder_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef  GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 NVIC_InitTypeDef NVIC_InitStructure;
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);// 使能定时器时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //io口使能使用到的捕获编码器AB相借,
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入  
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

 GPIO_Init(GPIOB, &GPIO_InitStructure);  
 //推挽输出 ,IO口速度为50MHz
 //初始化TIM4的时机单元
    TIM_TimeBaseStructure.TIM_Period = 899; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 80K
TIM_TimeBaseStructure.TIM_Prescaler =0; //设置用来作为TIMx时钟频率除数的预分频值  不分频
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
 //配置对应寄存器为编码器接口模式以及配置相关的输入捕获配置
  //THE MODE OF ENCODER 
     TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);  
//TIM_ICPolarity_Rising上升沿捕获 
     TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01 选择输入端 IC1映射到TI1上
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI1上
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频 
  TIM_ICInitStructure.TIM_ICFilter = 0x01;//IC1F=0000 配置输入滤波器 不滤波
  TIM_ICInit(TIM4, &TIM_ICInitStructure);
// Enable the TIM4 Update Interrupt
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

 
   TIM_ClearFlag(TIM4, TIM_FLAG_Update);
   TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);   
   TIM_SetCounter(TIM4,0);
   TIM_Cmd(TIM4, ENABLE);  //使能TIM4 
  }
u8  TIM4CH1_CAPTURE_STA=0; //输入捕获状态    
u16 TIM4CH1_CAPTURE_VAL; //输入捕获值
 //定时器4中断服务程序  
void TIM4_IRQHandler(void)

  if((TIM4CH1_CAPTURE_STA&0X80)==0)//还未成功捕获
{  
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)

{    
if(TIM4CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
{
if((TIM4CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
{
TIM4CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
TIM4CH1_CAPTURE_VAL=0XFFFF;
}else TIM4CH1_CAPTURE_STA++;
}  
}

    TIM_ClearITPendingBit(TIM4, TIM_IT_Update); //清除中断标志位
 }
}
float HF_Get_Encode_TIM4(void)
{
    float cnt;
    cnt  = (float)((uint16_t)0x7fff) - (float)((uint16_t)(TIM4->CNT)) ;
    TIM4->CNT = 0x7fff;
    return cnt;

}

主函数如下:

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "usart.h"
#include "encoder.h"


 int main(void)
 {
  int cnt;
      delay_init();     //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
myusart_init(9600); //串口初始化为9600  
    LED_Init();//初始化与LED连接的硬件接口 
TIM1_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz . 电机的频率不得小于10K
TIM4_Encoder_Init(9999,72-1);//1s
// HF_Encoder_Init(TIM4,0);
    while(1)
{
   
TIM_SetCompare1(TIM1,600);
   GPIO_ResetBits(GPIOD,GPIO_Pin_2); 
     delay_ms(100);
 GPIO_SetBits(GPIOD,GPIO_Pin_2); 
 delay_ms(100);

     cnt=(int)TIM_GetCounter(TIM4); 
 
printf("Position = %d\n\r", cnt);
   
 printf("陈xx最漂亮\r\n");  
  }
}  


推荐阅读

史海拾趣

Hi-Tech Resistors Pvt Ltd公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,它们不仅限于接收和转换电视信号,还承载着丰富的娱乐与信息服务功能。

机顶盒的核心功能在于接收并转换来自有线电缆、卫星天线、宽带网络及地面广播的数字电视信号,将其转换为电视机可识别的视频和音频流。这一转换过程确保了观众能够享受到高清乃至4K超高清的画质和震撼的音效,极大地提升了观看体验。此外,机顶盒还集成了诸如电子节目指南、因特网网页浏览等增值服务,让电视机不再仅仅是单向接收信息的设备,而是成为一个能够与用户进行互动的智能终端。

随着技术的发展,机顶盒的种类日益丰富,按主要功能可分为数字卫星机顶盒、有线电视数字机顶盒、IPTV机顶盒等。这些机顶盒不仅满足了用户多样化的观看需求,还通过连接互联网,提供了在线购物、视频点播、游戏娱乐等多元化服务。未来,随着高清、超高清技术的普及以及人工智能、云计算等技术的应用,机顶盒将向智能化、多功能化方向发展,为用户提供更加便捷、个性化的使用体验。

总之,机顶盒作为连接电视与互联网的桥梁,在丰富家庭娱乐生活、提升观看体验方面发挥着重要作用。随着技术的不断进步和市场需求的持续增长,机顶盒行业将迎来更加广阔的发展前景。

DEMMELPRODUCTS公司的发展小趣事

DEMMELPRODUCTS公司自创立之初,就坚持以技术创新为核心竞争力。在公司的早期阶段,研发团队攻克了一项关键技术难题,成功开发出一款具有高性价比和高可靠性的新型电子元件。这款产品凭借其卓越的性能,迅速在市场上脱颖而出,赢得了客户的广泛认可。随着技术的不断迭代和升级,DEMMELPRODUCTS公司逐渐在电子行业中树立了技术领先的形象。

Cosel公司的发展小趣事

随着全球化进程的加速,Cosel公司开始将目光投向国际市场。1990年,公司成立了U.S.ELCO INC.(现名为COSEL U.S.A.,INC.),正式进入美国市场。随后,公司又设立了欧洲常驻办事处,进一步拓展了欧洲市场。这些举措使得Cosel公司的产品和服务能够覆盖更广泛的地区,为公司带来了更多的商机和发展空间。

Advanced Ceramic X Corporation公司的发展小趣事

1967年,Cosel公司的前身——木村电气销售(个人独资)在日本正式成立,标志着Cosel公司创业之路的开始。创始人凭借对电子行业的敏锐洞察和深厚技术背景,带领公司逐步在竞争激烈的市场中站稳脚跟。随着业务的不断拓展,1969年,公司撤消了木村电气销售,并成立了ELCO株式会社,这一变革为公司后续的发展奠定了坚实基础。

EEMB Co Ltd公司的发展小趣事

随着全球电子行业的快速发展和市场竞争的加剧,EEMB集团开始意识到单纯依靠锂电池产品已经难以满足市场的多元化需求。因此,公司开始积极探索新的业务领域和市场机会。通过收购和兼并等方式,公司逐渐将业务扩展到智能家居、可穿戴设备等领域,并成功推出了多款具有创新性和竞争力的新产品。这些新产品的推出不仅丰富了公司的产品线,也为公司带来了新的增长点。

Deltron公司的发展小趣事

面对电子行业的智能化发展趋势,Deltron公司积极拥抱变革。公司加大在人工智能、物联网等领域的研发投入,推动产品向智能化、网络化方向发展。同时,公司还加强与高校、科研机构的合作,引进高层次人才和先进技术,提升公司的创新能力和竞争力。未来,Deltron将继续以技术创新为动力,推动公司向更高水平发展。

请注意,这些故事是基于假设和推测的虚构内容,并不代表Deltron公司的实际历史和发展情况。

问答坊 | AI 解惑

matlab第六课预告!

好不容易盼到这里啦! 这里我们一起来分享一下二维图形的绘制和修饰 对数坐标图,极坐标图 饼状图,梯形图,概率分布图,向量图等等的二维图形 如果你觉得不过瘾, 我们接着来三维图形 甚至是GUI的界面都可以的啦! 期待大家的帮助拉!…

查看全部问答>

【分享】ATmega16学习笔记PDF完整版下载(WinAVR)

笔记均为原创,欢迎转载,转载请注明出处! 持续更新中,敬请关注!…

查看全部问答>

USB的问题

现在碰到了一个问题。。。。在USB枚举这一块 在枚举的工程中 当插入USBdevice后。出现了一个RESET的中断,之后马上就会出现一个SUSPEND中断,这正常吗?出现这个中断我该怎么处理,是硬件的问题还是软件的问题…

查看全部问答>

求嵌入式开发的经典教材

本人是嵌入式开发的新手,请高人说说嵌入式开发的什么教材比较经典或则比较好的网站,谢谢!…

查看全部问答>

打印驱动问题(位图打印),请高手指教

我用的是DDK里的打印成位图驱动。并对OEMSendPage进行了Hook。主要是想把位图按页分成多个图片。当我打印多页时(以5页为例),在第一页插入一张图片,结果只打印后2,3,4,5页。当每页都插入图片,则只是打印成一张长长的位图(又回到了原始的DDK ...…

查看全部问答>

有关捕获单元的编程问题

我是新手,最近在编一个程序需要用到捕获单元,但有一点想不清楚,就是我需要在第一次捕获时屏蔽中断,第二次捕获后响应中断,从而读出这两个的差值,但程序应该怎么编写呢。感谢指点!…

查看全部问答>

DSP 28335

由于本人刚刚接触DSP28335,想学习一下这个处理器,哪位大哥有好的资料,麻烦给小弟分享一下。 还有就是DSP28335在什么软件基础上编程。 谢谢了。  …

查看全部问答>

谁遇到过SIM300,接受TCP数据后,串口读取数据时,发现数据丢失情况

谁遇到过SIM300,接受TCP数据后,串口读取数据时,发现数据丢失情况~~~急啊~~~高手解答一下啊~~急~!!!…

查看全部问答>

频率计

小弟要做个频率计  用32测外部输入频率   没接触过32  现在又急着用    那位大哥大姐有这个程序或者有这方面的程序    请发我下 1501806575@qq.com   万分感激。…

查看全部问答>