OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11672|回复: 9

ministm32 初学者从何入门呢?

[复制链接]

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2011-7-18
在线时间
0 小时
发表于 2011-7-18 15:36:03 | 显示全部楼层 |阅读模式
我是一个stm32初学者,最近一直在看《stm32不完全手册》,前几个例子还是看得懂的,比如跑马灯,按键,甚至可以自己更改程序达到自己想要的效果,可是越往下看,大多是介绍各种寄存器,要看懂程序代码得先弄清各个寄存器的功能和使用方法,那样觉得很繁琐而且也记不住,没有一个系统的认识。我担心要是不弄懂这些到后面复杂的程序自己就很难更改了,只会跑光盘给的例子了!谁有同样的感受?谁能给个建议?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-7-2
在线时间
3 小时
发表于 2011-7-18 15:50:24 | 显示全部楼层
这个寄存器其实也不用记那么清楚!! 只要知道什么功能需要用到什么寄存器就行,至于代码具体是什么意思可以查表就行! 你可以把关于寄存器那几页打印出来。需要用时就查看就是!! 另外每种功能都有列程的,需要此功能时复制修改就是了。。。,至于一定要全部记住恐怕不是一时半会能做到的。。。。,如果是个人一时半会就可以学会,你认为你学这个还很有意义或者前途?!!!
回复 支持 反对

使用道具 举报

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2011-7-18
在线时间
0 小时
 楼主| 发表于 2011-7-19 09:33:11 | 显示全部楼层
好得,谢谢你哦,我得调整一下方法和心态。
回复 支持 反对

使用道具 举报

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2011-7-18
在线时间
0 小时
 楼主| 发表于 2011-7-20 21:03:12 | 显示全部楼层
回复【2楼】hpy6666:
---------------------------------
还想问的就是,一定要按照不完全手册上的实验顺序来学吗?我们老师给我们两周时间熟悉板子
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-7-20 21:30:40 | 显示全部楼层
回复【4楼】小华338:
---------------------------------
不一定了.自己多些几个代码就清楚了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-7-2
在线时间
3 小时
发表于 2011-7-21 08:28:14 | 显示全部楼层
我跟你一样是初学者,建议你还是先把列程都跑一遍,浏览一下程序多看看原子哥是怎么用的,不理解没关系,只要知道当你要用的功能可以从那个列程参考就行了。。。! 本人现在玩步进电机,板子买了半个月了到昨晚才把程序编译通过! 原来在网上找的资料通不过,一定要完整的列程才有参考价值,最后只有在原子哥的跑马灯的基础上修改了方才通过!所以直接在列程的基础上增加一些自己的想法并去实际操作是最好的方法。 现在我的程序在MDK软件仿真通过!! 今晚继续硬试。。。。
回复 支持 反对

使用道具 举报

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2011-7-18
在线时间
0 小时
 楼主| 发表于 2011-7-21 08:46:37 | 显示全部楼层
谢谢!看来我遇到同伴了
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2011-5-13
在线时间
0 小时
发表于 2011-7-21 09:01:43 | 显示全部楼层
回复【6楼】hpy6666:
---------------------------------
兄弟的步机电机程序是用延时还是PWM的? 我弄了个用定时器中断事件翻转I/O口的,但没有加减速功能,准备试试PWM的。
桥流水不流
回复 支持 反对

使用道具 举报

13

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2011-7-2
在线时间
3 小时
发表于 2011-7-21 09:39:31 | 显示全部楼层
回复【8楼】xmjulytiger:

---------------------------------
我也是用的延时啊,也是直接控制的I/0口翻转,这个简单!至于加减速的话应该也可以用延时控制,在恒速的基础上修改时间可以完成的,等我硬调通过后我先试试,PWM的还没入门啊。。。! 另能不能把你的程序上传交流下! 先谢了。
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2011-5-13
在线时间
0 小时
发表于 2011-7-21 11:13:03 | 显示全部楼层
回复【9楼】hpy6666:
---------------------------------
代码还没成型,仍在试的阶段。把驱动和中断部分贴上来吧。基于原子的例程,很简单。目前改变“num==”的值能线性加减速,准备改用PWM,看看能否实现加减速曲线控制。

/****************************************************************************/  
void step_moto(void) //步进电机驱动       
{      
    u16 plu_num1, plu_num2;    
         
    plu_num1=0;    
    plu_num2=0;         
    num=0,    
    
//  init_direct();    
        
    plu_num1=(in_buf[5]*256+in_buf[6])*24; //转角增量1        
    plu_num2=(in_buf[8]*256+in_buf[9])*24; //转角增量2    
    
    while(plu_num1!=0|plu_num2!=0)    
    {    
        TIM3->DIER|=1<<0;   //允许更新中断                 
        TIM3->DIER|=1<<6;   //允许触发中断                                             
        TIM3->CR1|=0x01;    //使能定时器3             
  
        if(num==5) //0.25ms,4,000 plu/sec    
        {    
            num=0;     
            
            if(plu_num1>0)                                                                               
                {    
                    //pluse_1=~pluse_1;  
                    LED0=!LED0;    
                    plu_num1--;     
                }    
                                        
            if(plu_num2>0)                                                                               
                {    
                    //pluse_2=~pluse_2;   
                    LED1=!LED1;   
                    plu_num2--;     
                }    
        }       
    }  
         
        TIM3->DIER|=0<<0;   //不允许更新中断                
        TIM3->DIER|=0<<6;   //不允许触发中断                                            
        TIM3->CR1&=0xFE;    //关闭定时器3     


/****************************************************************************/ 

u8 num;  
//定时器3中断服务程序  
//2ms中断1次  
void TIM3_IRQHandler(void)  
{                                     
    if(TIM3->SR&0X0001)//溢出中断  
    {  
        num=num+1;                                                                
    }                    
    TIM3->SR&=~(1<<0);//清除中断标志位          
}  
桥流水不流
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 19:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表