想用CH582做一個(gè)ADB鍵盤轉(zhuǎn)USB和藍(lán)牙的設(shè)備,現(xiàn)在的問題是ADB(Apple Desktop Bus)是非常奇葩的用占空比表達(dá)0和1的協(xié)議:https://www.lopaciuk.eu/2021/03/26/apple-adb-protocol.htmld
65 μs 低電平 + 35 μs 高電平表示 0, 35 μs 低電平 + 65 μs 高電平表示 1
這樣是不是就得寫個(gè)循環(huán)一直檢測(cè)GPIO的高低電平持續(xù)時(shí)間?但是TMOS里任務(wù)間隔都是625us,如何能夠持續(xù)的檢測(cè)GPIO呢?
你這里的目的應(yīng)該是模擬這個(gè)電平,可以通過定時(shí)器中斷里面拉波形,此時(shí)不要進(jìn)行睡眠。等到波形操作完成再進(jìn)行睡眠。
既然是讀取GPIO電平,為啥不用中斷嘞.或者直接在主循環(huán)中寫一個(gè)函數(shù)一直輪詢.感覺用TMOS任務(wù)時(shí)間精度達(dá)不到吧
3樓說的有理,我的設(shè)想是通過GPIO中斷來讀取電平,通過定時(shí)器中斷來寫入電平。就是不知道TMOS的任務(wù)會(huì)不會(huì)和這些中斷沖突,比如藍(lán)牙正在發(fā)送,來了一個(gè)GPIO中斷,會(huì)不會(huì)影響藍(lán)牙發(fā)送的執(zhí)行?
因?yàn)樾枰褂盟{(lán)牙功能,所以TMOS必須開啟。
可以查看函數(shù)的返回值是否為成功。
例如noti發(fā)送數(shù)據(jù),判斷simpleProfile_Notify函數(shù)的返回值為0,則代表數(shù)據(jù)已經(jīng)發(fā)送到底層,在藍(lán)牙建立連接的情況下,數(shù)據(jù)一定會(huì)發(fā)送成功。如果此處的返回值不為0,則代表發(fā)送失敗,可以應(yīng)用層重復(fù)調(diào)用發(fā)送函數(shù)。