欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

MCU回調函數3個參數的坑

[復制鏈接]
跳轉到指定樓層
樓主
ID:90212 發表于 2020-6-14 17:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
玩stc15的4串口通信,down了個單串口通信的案例,改成4串口。里面有個串口發送處理的回調函數,參數是字符串指針和字符串長度。

typedef uchar(*MB_SendDatas)(uchar *,uchar) ;

現在4串口需增加個串口號參數:
typedef uchar(*MB_SendDatas)(uchar *,uchar,uchar) ;

編譯報錯:error C212: indirect call: parameters do not fit within registers

定義增加了重入 reentrant 編譯能通過,運行發送完正常數據后總會跟一串的0x00,調試發現字符串長度在調用 MB_SendDatas 之前是正常的,但調用之后就改變了。

不得已改回原本的兩個參數,把串口號改成全局變量測試正常。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:108573 發表于 2020-6-15 08:38 | 只看該作者
感覺用51的話,太高級的C語言特性估計支持不太好,有沒有大神看看是什么問題
回復

使用道具 舉報

板凳
ID:67085 發表于 2020-6-16 13:12 | 只看該作者
本帖最后由 shushikuan 于 2020-6-16 13:41 編輯

使用reentrant 關鍵字,需要在startup.a51中指定參數堆棧首地址。比如STC15W408AS 的XRAM是 256字節,在"Large variables in XDATA" 模式時,要寫成  [  XBPSTACKTOP   EQU    0FFH+1; 將堆棧頂設置為最高地址+1. ]
            
回復

使用道具 舉報

地板
ID:781054 發表于 2020-6-16 15:12 | 只看該作者
是的,我也經常遇到這種問題
回復

使用道具 舉報

5#
ID:781054 發表于 2020-6-16 15:12 | 只看該作者
是的,我也經常遇到這種問題
回復

使用道具 舉報

6#
ID:477524 發表于 2020-8-20 14:19 | 只看該作者
一樣的問題
回復

使用道具 舉報

7#
ID:86450 發表于 2020-8-21 13:09 | 只看該作者
是的,我也經常遇到這種問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表