• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

两个关于STM32和51的问题

小飞侠123 2017-02-20 浏览量:884
1、关于51的一个问题,不是道楼主是否知道SP栈指针,如果我想用用51做个任务调度器,SP指针起到什么作用
2、关于STM32的,就是在STM32F103系列中,一条指令执行的时间是否固定,是否跟代码在RAM从存在的位置有关系,要是有关系为什么,存在什么关系,怎么让特定的代码在特定的内存中执行
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1. 任務調度器是要跑RTOS吧? 每個Task都有他的Stack,而RTOS會占用SRAM一個Block存放各Task,叫做Memory Manager,當新建各Task時,每個Task stack都有他的Pointer指向結尾,並判斷是否超過上限,所以也能稱作各Task的SP,而要有RTOS下的任務調度才有SP的實際用途,單Task(無系統)SP就沒法做什麼特別應用


    2. 基本上MCU的Memory能夠定址的範圍內,解析的Cycle數是一樣的,即執行時間是一樣的,所以在RAM中哪個位置沒有關係,另外如果您想放置在RAM中特定地址來啟動User APP,可以在編譯中指定地址,則編譯器產生機械碼時會代入該入口地址,MCU啟動時就會跳到該入口地址開始執行

    以上供參考

    • 发布于 2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  •        1.SP堆栈指针是用于程序现场保护的指针,大概作用就是在程序响应中断或调用子程序的时候将16位PC(程序计数器)的值以及PSW的内容(需用到POSU指令)入栈,在结束中断或退出子程序的时候将这些数据出栈,以达到保护程序现场的目的;你想用51做任务调度器,是想进行多任务切换,那么在发生任务切换的时候,SP指针就起作用了,它可以暂时保护未完成任务的数据现场,等新任务做完或再次切换到原来的任务的时候数据不丢失。

           2.STM32是三级流水线设计,因此一条指令的执行时间不固定;跟代码在RAM中存在的位置没有关系,只跟代码结构有关系;IAP能让特定代码在特定内存执行。

    • 发布于2017-02-20
    • 举报
    • 评论 2
    • 0
    • 0
小飞侠123 回复了 donatello :第二个问题,这个也许没有遇到的不了解,局限于书上的或者百度上的知识了,你可以尝试一下用相应的单片机做一下测试,测试内容就是用同样的代码进行延时,然后更改执行的位置,这个位置不是随意的,f103在设计的时候内存上有两种读取方式,一种是4位对其的一种是8位对齐的,所以,不同的内存中是有区别的,这个百度有涉及到,但是讲的不多。楼主可以查看一下。 回复
小飞侠123 回复了 donatello :当然可能我表述有误,不是在RAM中,是读到RAM中 回复

  • STM32有三级流水线,指令周期不定的,arm给出的是1.25MIPS/Mhz,一个平均执行速度。就是1Mhz的频率,每秒钟可以执行1.25M指令。72M,那么就是72*1.25M

    与代码存储位置无关

    IAP 可以实现程序跳转执行特定程序






    • 发布于2017-02-20
    • 举报
    • 评论 1
    • 0
    • 0
小飞侠123 回复了 Eagleson :与代码存在flash中的位置有关,http://bbs.21ic.com/icview-322593-1-1.html,可以查看一下 回复

  • 我也来学习学习                           
    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 我也来学习学习                           
    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • stm32系列芯片都是多级流水线结构,一条指令的运行时间是不固定的,51系列的芯片和stm32系列芯片是不一样的
    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 1、51的SP指针起到的就是堆栈指示作用,用于指示堆栈的位置,指向堆栈的最后地址

    2、一条指令执行的时间不确定,由于其三级流水线的特点

    其次,这个执行速度跟你的RAM的类型有关系,一般来说片外RAM的时间更长,请查看

    http://bbs.21ic.com/icview-797442-1-1.html​ ;

    至于最后一个问题,需要用到IAP指针,具体使用方法请看http://www.openedv.com/thread-11494-1-1.html ;

    • 发布于2017-02-20
    • 举报
    • 评论 1
    • 0
    • 0
小飞侠123 回复了 chen0000009 :这个还真没有问题,不同的RAM执行速度肯定不一样,没有挂片外 回复

  • SP就是告诉你栈的现在的操作地址,起一定的保护程序的作用,任务调度其实就是在频繁的操作SP

    arm的指令时间是不固定的,和配置的频率有关

    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

两个关于STM32和51的问题