国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

STM32 兩個(gè)棧,你用哪一個(gè)?

商務(wù)辦公
我們都知道,STM32 物理上有兩個(gè)棧,一個(gè)是 PSP,一個(gè)是 MSP,在未使用操作系統(tǒng)的情況,一般只用一個(gè) MSP。也就是說,不管是 main 函數(shù),還是中斷處理函數(shù),都使用 MSP 保存上下文。

[[434990]]

之前的分享的一篇文章 HardFault 之 INVSTAE 錯(cuò)誤定位(一) 里面提到了一份官方 PPT《HardFault的診斷.pdf》 ,當(dāng)時(shí)魚鷹沒有去尋找,然后一位讀者 fane 找到后分享給魚鷹了,在此感謝這位道友。

看完之后,覺得很有幫助,所以分享給大家(關(guān)鍵字:hardfault的診斷),建議大家也看一看。里面有一份很實(shí)用的代碼,在這里貼出來。

  1. void hard_fault_handler_c (unsigned int * hardfault_args) 
  2.   unsigned int stacked_r0; 
  3.   unsigned int stacked_r1; 
  4.   unsigned int stacked_r2; 
  5.   unsigned int stacked_r3; 
  6.   unsigned int stacked_r12; 
  7.   unsigned int stacked_lr; 
  8.   unsigned int stacked_pc; 
  9.   unsigned int stacked_psr; 
  10.   stacked_r0 = ((unsigned long) hardfault_args[0]); 
  11.   stacked_r1 = ((unsigned long) hardfault_args[1]); 
  12.   stacked_r2 = ((unsigned long) hardfault_args[2]); 
  13.   stacked_r3 = ((unsigned long) hardfault_args[3]); 
  14.   stacked_r12 = ((unsigned long) hardfault_args[4]); 
  15.   stacked_lr = ((unsigned long) hardfault_args[5]); 
  16.   stacked_pc = ((unsigned long) hardfault_args[6]); 
  17.   stacked_psr = ((unsigned long) hardfault_args[7]); 
  18.   printf ("\n\n[Hard fault handler - all numbers in hex]\n"); 
  19.   printf ("R0 = %x\n", stacked_r0); 
  20.   printf ("R1 = %x\n", stacked_r1); 
  21.   printf ("R2 = %x\n", stacked_r2); 
  22.   printf ("R3 = %x\n", stacked_r3); 
  23.   printf ("R12 = %x\n", stacked_r12); 
  24.   printf ("LR [R14] = %x subroutine call return address\n", stacked_lr); 
  25.   printf ("PC [R15] = %x program counter\n", stacked_pc); 
  26.   printf ("PSR = %x\n", stacked_psr); 
  27.   printf ("BFAR = %x\n", (*((volatile unsigned long *)(0xE000ED38)))); 
  28.   printf ("CFSR = %x\n", (*((volatile unsigned long *)(0xE000ED28)))); 
  29.   printf ("HFSR = %x\n", (*((volatile unsigned long *)(0xE000ED2C)))); 
  30.   printf ("DFSR = %x\n", (*((volatile unsigned long *)(0xE000ED30)))); 
  31.   printf ("AFSR = %x\n", (*((volatile unsigned long *)(0xE000ED3C)))); 
  32.   printf ("SCB_SHCSR = %x\n", SCB->SHCSR);  
  33.   while (1); 
  1. HardFault_Handler: 
  2. TST LR, #4 
  3. ITE EQ 
  4. MRSEQ R0, MSP 
  5. MRSNE R0, PSP 
  6. B hard_fault_handler_c 

這份代碼可以在出現(xiàn)錯(cuò)誤時(shí)打印寄存器的值,從而定位問題(上面部分代碼用匯編,可以放在 .s 文件中)。

我們都知道,STM32 物理上有兩個(gè)棧,一個(gè)是 PSP,一個(gè)是 MSP,在未使用操作系統(tǒng)的情況,一般只用一個(gè) MSP。也就是說,不管是 main 函數(shù),還是中斷處理函數(shù),都使用 MSP 保存上下文。

而如果使用了操作系統(tǒng),一般會(huì)使用兩個(gè)棧,中斷用 MSP,任務(wù)用 PSP(實(shí)際操作的寄存器都是 SP,但可以通過特殊指令切換 SP 當(dāng)前使用哪個(gè))。

那么如果在任務(wù)函數(shù)中運(yùn)行時(shí)出現(xiàn)了異常,或者在中斷時(shí)出現(xiàn)了異常,那么出現(xiàn)異常時(shí)用的哪一個(gè)中斷,這個(gè)該如何判斷。

PPT 中給出了答案:

而上面的一段匯編代碼就是用來判斷上次使用的是哪個(gè)棧。

有了這些寄存器信息,大多數(shù)的時(shí)候,我們都可以借此判斷問題出在哪,方便了許多,建議大家在自己的工程中加入這份代碼,當(dāng)然如果你不嫌麻煩也可以移植這個(gè)《功能強(qiáng)大的離線 hardfault 追蹤工具》,定位就更方便了。

 

但也不是說,有了這些寄存器信息就一定能定位問題,因?yàn)槌霈F(xiàn) Hardfault 的可能太多了,只是有了這些信息可以縮小范圍,減少排查問題的時(shí)間。

 

責(zé)任編輯:武曉燕 來源: 魚鷹談單片機(jī)
相關(guān)推薦

2018-02-10 17:59:10

LinuxcURLwget

2020-06-17 15:00:27

FedoraUbuntuLinux

2023-10-08 11:53:29

2019-04-29 15:27:57

網(wǎng)絡(luò)故障工具

2022-10-08 09:03:16

JuliaPython機(jī)器學(xué)習(xí)

2018-10-18 14:26:45

云計(jì)算架構(gòu)師管理

2018-11-29 09:45:03

Windows 10Windows版本

2018-06-22 15:52:50

云桌面

2021-11-19 14:44:17

樹莓派Linux

2011-11-08 08:59:51

云計(jì)算IaaSPaaS

2022-04-02 09:05:47

AlmaLinuxRocky LinuCentOS

2017-10-24 15:46:03

VMwareOpenStackvSphere

2018-07-18 13:29:38

云計(jì)算云平臺(tái)企業(yè)

2018-08-12 23:15:04

iOS Android 操作系統(tǒng)

2010-07-16 11:40:45

KVMXen

2013-07-30 09:57:25

UbuntuLinux Mint

2020-10-29 07:07:38

循環(huán)體外Java

2021-10-04 18:44:06

Linux MintFedora操作系統(tǒng)

2022-04-10 23:02:08

GoRust語言

2022-12-02 13:52:44

FleetCode
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久综合中文色婷婷| 日本午夜精品理论片a级appf发布| 你真棒插曲来救救我在线观看| 欧美激情videos| 最近2018年手机中文在线| 日韩午夜av| 亚洲主播在线观看| 日韩国产高清一区| 2024最新电影免费在线观看| 久久综合九色综合97_久久久| 日韩精品久久久久| 开心快乐六月丁香婷婷| 国产成人免费视频一区| 99九九视频| 户外极限露出调教在线视频| www.亚洲免费av| 日韩精品欧美专区| 91不卡在线观看| 性欧美xxxx交| 国外亚洲成av人片在线观看| 草莓视频一区二区三区| 成人福利视频网站| 欧美精品v日韩精品v韩国精品v| 欧美日韩一区二区三| 一级毛片在线| 在线国产一区二区| 欧美中文在线| 波多野结衣一区二区三区免费视频| 免费观看成人www动漫视频| 看片的网站亚洲| 午夜精品福利一区二区蜜股av | 欧美日韩精品不卡| 日韩欧美大片| 97在线观看免费高清| 日本精品久久| 亚洲欧美激情视频| 69堂免费视频| 另类春色校园亚洲| 成人www视频在线观看| 男男激情在线| 亚洲一区二区视频在线观看| 国产福利影院在线观看| 2024国产精品| 成人精品小视频| 欧美国产视频在线| 亚洲一区在线不卡| 亚洲国产精品v| 黑粗硬长欧美在线视频免费的| 《视频一区视频二区| 国产成人高潮免费观看精品| 欧洲天堂在线观看| 日韩欧美在线中文字幕| 中文字幕在线观看| 在线这里只有精品| 麻豆传媒视频在线| 国产福利不卡视频| 成人免费观看cn| 国产欧美视频一区二区| 亚洲一区精品电影| 韩国一区二区三区在线观看| 不卡视频一区二区三区| 97品白浆高清久久久久久| 久久免费精品国产久精品久久久久| 欧美一区二区三区成人久久片| 久久久一二三| 91手机视频在线| 中国av一区| 欧美精品二区| 91精品久久久久久久久久| 日韩久久久久| 免费看污久久久| 国产香蕉尹人视频在线| 激情av在线播放| 国产视频精品自拍| 日本欧美韩国| 91精品国产精品| 中文无码久久精品| 日本免费一区二区三区| 国产成人精品三级| 国语对白在线视频| 欧美日韩不卡视频| 成人在线中文| 国产精品丝袜高跟| 麻豆成人av在线| 能看的毛片网站| 色综合天天综合网天天狠天天| 亚洲色图美国十次| 午夜成人免费电影| av电影高清在线观看| 中文字幕亚洲情99在线| 加勒比久久高清| 亚洲已满18点击进入在线看片| 青青草一区二区三区| 色国产在线视频| 91精品蜜臀在线一区尤物| 在线看片地址| 在线观看国产一区二区| 丝袜美腿一区| 欧美一区二区大片| 欧美a级大片在线| 精品国产免费人成电影在线观看四季| 成人做爰视频www网站小优视频| 91成人福利在线| 日本不卡一区二区三区| caoporen人人| 日韩精品久久久久久久玫瑰园| 日韩精品导航| 精品国偷自产在线视频99| 精品一区二区三区的国产在线观看| 狠狠色综合网站久久久久久久| 久久99视频| 婷婷亚洲婷婷综合色香五月| 亚洲国产精品99久久久久久久久| 免费在线观看av| 91国产视频在线| 麻豆91精品视频| 一级视频在线观看视频在线啦啦| 国产一区二区三区在线视频| 欧美日韩1区2区3区| 男人透女人免费视频| 91丨九色porny丨蝌蚪| 大胆av不用播放器在线播放| 岛国av一区二区三区| 写真福利精品福利在线观看| 成人免费激情视频| 久久色在线视频| 欧美人与禽猛交乱配| 3d精品h动漫啪啪一区二区| 欧美一区成人| 女性隐私黄www网站视频| 日韩欧美一区在线观看| 蜜臀av在线| 国产精品美女无圣光视频| 国产最新精品| 欧美在线视频一区二区| 欧美美女在线| 三上悠亚久久精品| 日韩写真欧美这视频| 香蕉国产精品| 男人的天堂网av| 久久全国免费视频| 国产最新精品| 一区二区在线播放视频| 亚洲国产成人精品久久| а√天堂8资源在线| 51国偷自产一区二区三区| 国产精品高潮久久久久无| 日本久久二区| 免费看毛片的网址| 亚洲国产黄色片| 爽好久久久欧美精品| 在线免费黄色| 亚洲国产婷婷综合在线精品| 激情视频网址| 欧美激情第三页| www.亚洲免费av| 福利一区二区三区视频在线观看| 亚洲成人自拍视频| 成人动漫在线一区| 日本高清不卡一区二区三区视频| 欧美影视一区二区| 精品美女一区二区三区| 亚洲精品乱码日韩| 日本午夜在线亚洲.国产| 91亚洲国产成人精品一区二三| 91精品论坛| 久久在线中文字幕| 精品国产一区久久久| 久久综合成人精品亚洲另类欧美| 国产精品久久久久久吹潮| 日韩亚洲欧美视频| 欧美乱妇40p| 欧美极品少妇xxxxⅹ高跟鞋| 精品99re| 很黄很污的网站| 国产不卡在线观看| 天天综合网 天天综合色| 你懂的视频一区二区| 2021av在线| 椎名由奈jux491在线播放| 一区二区日韩精品| 国产精品嫩草影院com| 精品国产a一区二区三区v免费| 超碰在线电影| 国产性色av一区二区| 国产成人免费视频网站高清观看视频| 亚洲成人短视频| www黄色在线| 国产精品av在线| 在线观看亚洲一区| 久久激五月天综合精品| av一级久久| 日韩手机在线观看视频| www.亚洲天堂网| 久久久久国产精品厨房| 日本一区影院| 手机看片1024久久| 精品国产欧美一区二区三区成人| 久久午夜免费电影| 精品欧美久久|