在CH32V307 中 使用 模擬i2c 讀取數(shù)據(jù)時,發(fā)現(xiàn)讀取的數(shù)據(jù)不穩(wěn)定,數(shù)據(jù)變化很快,該程序在STM32中是可以穩(wěn)定使用的,請問 這個可能是什么原因引起的呀??
您好,可以檢查一下是否跟程序中延時函數(shù)有關(guān),模擬IIC中使用的是自定義延時函數(shù)還是調(diào)用debug文件中的延時函數(shù),若自定義延時函數(shù),主頻不同會導(dǎo)致延時時間不同,因此可能導(dǎo)致差異,建議直接調(diào)用延時函數(shù),下面鏈接為CH32V103模擬IIC例程,CH32V307基本也是一致的,你可以參考一下
https://bbs.21ic.com/icview-3060796-1-1.html
?
在 直接調(diào)用 延遲函數(shù)?Delay_Us 后? 延遲函數(shù) 會 卡在??SysTick->CTLR |= (1 << 4) | (1 << 5) | (1 << 0); 這一步
您好,關(guān)于延時函數(shù)配置,建議先對計數(shù)模式(即位4)進行配置,再配置計數(shù)器初始值更新(位5)和系統(tǒng)計數(shù)器使能控制位(位0)。程序配置方式可以參照下圖,后續(xù)若有問題,可通過郵箱(lzs@wch.cn)和我溝通
按您說的 改了,還是卡在那里。
我這邊 是在?FreeRTOS 的 線程里調(diào)用的,是否是FreeRTOS占用了?SysTick?,然后我使用TIM6 構(gòu)造了us延遲函數(shù),模擬I2C可以正常獲取數(shù)據(jù),但是FreeRTOS 線程里會執(zhí)行緩慢,就比如 沒有初始化TIM6時,F(xiàn)reeRTOS 線程執(zhí)行時間1MS,初始化TIM6后,執(zhí)行間間就是 1000ms了,在線程里是沒有寫延遲函數(shù)的
您好,若你是使用了FreeRTOS,可以使用vTaskDelay延時函數(shù)試一下,后續(xù)若有問題,可通過郵箱(lzs@wch.cn)和我溝通。