久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1900|回復: 9
打印 上一主題 下一主題
收起左側

請問stm32中斷入口地址如何定義,匯編

[復制鏈接]
跳轉到指定樓層
樓主
進入中斷led燈關閉,中斷返回led燈。中斷入口地址不知道怎么寫。
以下是程序
RCCAPB2_ENR        EQU        0X40021018
GPIOC_CRH        EQU        0X40011004
GPIOC_ODR        EQU        0X4001100C
GPIOC_13        EQU        0X422201B4
**************************       
GPIOB_CRL        EQU        0X40010C00
GPIOB_00        EQU        0X42218000
**************************
EXTI_IMR        EQU        0X40010400;中斷屏蔽寄存器,
EXTI_FTSR        EQU        0X4001040C;下降沿觸發寄存器
AFIO_EXTICR1        EQU        0X40010008;外部中斷引腳選擇寄存器
**************************

        AREA        ICODE,CODE
               
                                                       
        B        __main                ;跳轉到主程序

        B        LED_OFF                ;跳轉到中斷服務程序
       
       
                               
                ENTRY
                EXPORT        __main
__main
       
        BL        SYSTEM_BIOS
ST
       
        BL        LED_ON
        B        ST
       
       
SYSTEM_BIOS
        LDR        R0,=EXTI_IMR        ;解除0位中斷屏蔽
        MOV        R1,#0X01
        STR        R1,[R0]
       
        LDR        R0,=EXTI_FTSR        ;設置0位中斷為下降沿觸發
        MOV        R1,#0X01
        STR        R1,[R0]

        LDR        R0,=AFIO_EXTICR1;選擇pb0位為中斷輸入引腳
        MOV        R1,#0X01
        STR        R1,[R0]
       
        LDR        R0,=GPIOB_CRL        ;設置pb0位為輸入
        MOV        R1,#0X08
        STR        R1,[R0]

        LDR        R0,=RCCAPB2_ENR        ;打開gpioc時鐘gpiob
        LDR        R1,=0X18
        STR        R1,[R0]
       
        LDR        R0,=GPIOC_CRH        ;設置c13口為輸出
        LDR        R1,=0X00300000
        STR        R1,[R0]
        BX        LR
LED_ON                                ;打開led
        LDR        R0,=GPIOC_13
        MOV        R1,#1
        STR        R1,[R0]
        BX        LR

LED_OFF                                        ;關閉led
        STMFD        SP!,{R0,R1,LR}
        LDR        R0,=GPIOC_13
        MOV        R1,#0
        STR        R1,[R0]
        LDMFD        SP!,{R0,R1,LR}
       
        END

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2023-5-11 13:06 | 只看該作者
圖中你選定的那個s文件就是中斷入口。早就跟你說過了,匯編完全不通用,你要忘掉以前學過的其他平臺全部匯編知識,重新學一門新的匯編才可以。你還是用51匯編那一套寫出不堪入目完全不能用的代碼。
回復

使用道具 舉報

板凳
ID:123289 發表于 2023-5-11 14:34 | 只看該作者
讀STM32的手冊,手冊上有。
從地址0起,每四個字節中的數據,構成一個32位的地址,這個地址就是中斷向量,即這個中斷被響應后,要去運行的地方。
回復

使用道具 舉報

地板
ID:73992 發表于 2023-5-11 20:33 | 只看該作者
yzwzfyz 發表于 2023-5-11 14:34
讀STM32的手冊,手冊上有。
從地址0起,每四個字節中的數據,構成一個32位的地址,這個地址就是中斷向量, ...

請問,EXTI0 中斷地址是0x00000058 , 中斷地址當中放一條跳轉指令。在程序中用什么語句 或者方法才能做到 。
回復

使用道具 舉報

5#
ID:883242 發表于 2023-5-11 21:19 | 只看該作者
那個s文件里面有了完整的中斷處理程序,你不去看,反而像個沒頭蒼蠅一樣四處碰壁有意思嗎?照著startup_stm32f10x_md.s里面的中斷處理程序寫你自己的中斷處理程序,然后去掉weak屬性即可。那個weak屬性是在連接obj文件的時候,遇到同名的兩個模塊,直接去掉有weak屬性的那個,使用沒有weak屬性的,連warning都不會有。
回復

使用道具 舉報

6#
ID:123289 發表于 2023-5-12 10:31 | 只看該作者
不是放跳轉指令!而是放目標地址。
由于你是用【標號】來表址的,所以在地址位置上,寫入【標號】即可,剩下的事讓編譯器替你做。
有些頭文件中,已經將中斷向量的【標號】定義好了。如果你INCLUDE了這個頭文件,那么直接引用它定義的【標號】也可以。

STM32執行中斷的過程序:
1、保護現場(與你無關)。
2、從中斷源地址中取出4個字節組成一個32的地址(這個地址由你事先放置),放入PC指針中,即執行了跳轉(至中斷響應地址)!如果你的CPU地址不足32位,則高位自動丟棄。
3、執行PC指向的中斷服務程序……
4、遇到RETI時,恢復現場(與你無關),并從現場中取出中斷前的地址,送入PC,即中斷返回。


回復

使用道具 舉報

7#
ID:123289 發表于 2023-5-12 10:57 | 只看該作者
51:是到指定的地方去運行:
32:是到指定的地方取地址,再到這個地址處運行。這個指定的地方叫中斷向量。
單片機復位也有多種形式:
51:是0000H處執行。
32:是到00000004H處取4個字節作為地址,再到這個地址處運行。
6502:是到FFFEH處取2個字節作為地址,再到這個地址處運行。MSP430普通運行也如此。
MSP430:有兩個起動地址源,從哪個源起動運行,由RESET和TEST引腳上的信號決定。
這些都需要你讀CPU的手冊,CPU手冊讀多了,讀通了,你也就趨于高手了。

記住:多讀芯片手冊。
回復

使用道具 舉報

8#
ID:883242 發表于 2023-5-13 02:13 | 只看該作者
yzwzfyz 發表于 2023-5-12 10:57
51:是到指定的地方去運行:
32:是到指定的地方取地址,再到這個地址處運行。這個指定的地方叫中斷向量。 ...

STM32有“手冊”,但是全英文的,很難翻譯,能看懂原文不需要翻譯,對于看不懂的人來說,就算是最好的翻譯,翻譯過來也看不懂。現在只有《cortex-m*權威指南》一本科普讀物介紹STM32匯編,請問你看的是什么“手冊”?
回復

使用道具 舉報

9#
ID:73992 發表于 2023-5-13 23:12 | 只看該作者
yzwzfyz 發表于 2023-5-12 10:57
51:是到指定的地方去運行:
32:是到指定的地方取地址,再到這個地址處運行。這個指定的地方叫中斷向量。 ...

這個圖片是一個視頻教程的畫面。他是keil4mdk,外接的arm連接器。不是keil連接器。而且視頻是針對arm核心。不是針對stm32.他的中斷向量表是這么做的。上面led燈程序用到了啟動文件,我在程序中添加了一個中斷子程序,不知是否正確。led燈中斷寄存器現在沒有配置完整所以試不出來。或許不調用啟動文件的情況下,按視頻上的方法值的試一下
;led中斷服務程序
        AREA        JCODE,CODE
               
EXTI0_IRQHandler        PROC
                        EXPORT        EXTI0_IRQHandler
                               
        STMFD        SP!,{R0,R1,LR}
        BL        LED_OFF
        LDMFD        SP!,{R0,R1,PC}
        ENDP


回復

使用道具 舉報

10#
ID:883242 發表于 2023-5-14 00:24 | 只看該作者
lyonkon 發表于 2023-5-13 23:12
這個圖片是一個視頻教程的畫面。他是keil4mdk,外接的arm連接器。不是keil連接器。而且視頻是針對arm核心 ...

你看的視頻教程講的是ARMv3~v5體系結構,中斷向量表跟51類似,要放跳轉指令。而STM32是v6(Cortex-M0)或v7(Cortex-M3以及更以后的產品)體系,中斷向量表里面只有地址沒有指令。

你要么不看書,不看例程,現在稍微進步了,開始看視頻學了,又找到了錯誤的視頻,你到底是怎么做到無論怎么做都是錯的呢???
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 户外露出一区二区三区 | 国产亚洲一级 | 欧美精品首页 | 国产精品视频久久 | 亚洲精品白浆高清久久久久久 | 亚洲免费人成在线视频观看 | 免费观看一级视频 | 操操日| 欧美亚洲综合久久 | eeuss国产一区二区三区四区 | 在线不卡视频 | 欧美精品欧美精品系列 | 欧洲一级视频 | www.伊人.com| 网站黄色在线免费观看 | 国产乱码精品一区二区三区五月婷 | aacc678成免费人电影网站 | 激情毛片 | 久久国产区 | 国产精品1区| 亚洲视频精品 | 日韩成人免费视频 | a级在线免费 | 中文字幕免费视频 | 美女天天操 | 久久精品欧美电影 | 精品久久久久久久久久久久久久久久久 | 国产重口老太伦 | 日日夜夜精品免费视频 | 国产精品一区三区 | 亚洲成人精品 | av片免费观看| 欧美一区二区三区在线观看视频 | 亚洲欧美综合 | 久久免费视频2 | 黑人精品欧美一区二区蜜桃 | 久久精品国产一区二区电影 | 99热99| 亚洲免费网 | 伊人在线| 国产一级淫片免费视频 |