/*
* spi硬體初始化,記憶體位址初始化
*/static
void init(void)
/*初始化記憶體指標*/
gwriteptr=0;
greadptr=0;
/*使能spi1*/
hal_spi_init(&hspi1);
/*spi dma初始化,並開啟一次資料接收*/
hal_spi_receive_dma_init(&hspi1,fpgarevdata[gwriteptr],fpga_data_paket_length);}/*
* spi dma初始化,並開啟一次資料接收,
* 關鍵是返回函式的初始化,dma 源位址和目的位址的初始化,各標誌位的清空與開啟
* 該程式修改與hal庫的hal_spi_receive_dma函式
*/void hal_spi_receive_dma_init(spi_handletypedef *hspi, uint8_t *pdata, uint16_t size)
/* enable the spi error interrupt bit */
set_bit(hspi->instance->cr2, spi_cr2_errie);
/* enable rx dma request */
set_bit(hspi->instance->cr2, spi_cr2_rxdmaen);}/*
* fpga spi1資料接收函式,一次接收6個位元組資料報
* 該程式修改與hal庫的hal_dma_start_it函式和hal_spi_receive_dma函式
*/__inline void fpga_readbuffer(spi_handletypedef *hspi, uint8_t *dstaddress)
// else
//
/* check if the spi is already enabled */
// if((hspi->instance->cr1 &spi_cr1_spe) != spi_cr1_spe)
//
/* enable the spi error interrupt bit */
set_bit(hspi->instance->cr2, spi_cr2_errie|spi_cr2_rxdmaen);
// /* enable rx dma request */
// set_bit(hspi->instance->cr2, spi_cr2_rxdmaen);
// return hal_ok;}/*
*spi 返回函式,開啟spi dma開關,一次接收6個位元組資料報
*/void hal_spi_rxcpltcallback(spi_handletypedef *hspi)
}
當spi dma硬體初始化(spi dma mode為dma_normal)後,就可以開始一次初始
化hal_spi_receive_dma_init,之後,當有資料到來,spi接收完成返回函式會被呼叫,在返回函式中,首先關掉dma,接收到資料後,提供下一次接收資料的位址,重新開啟dma。
STM32韌體庫模版
開發工具 keil4 剛開始用這個庫的時候很無助,因為第一次用韌體庫 以下是我建立模版的步驟和注意事項 1.解壓韌體庫後先觀察目錄的整體結構,可以知道韌體庫裡面要弄出來的東西是libraries目錄,project目錄是韌體庫的應用,可以為今後開發專案做參考。2.現在建立乙個keil4的新工程,規劃...
STM32庫的理解
1 條件編譯的作用是避免重複包含 2 暫存器說白了就是記憶體,對暫存器的操作就是對記憶體的操作 3 51微控制器對暫存器是直接操作的,而stm32則是間接操作,如下圖 明白了以上三點,我們就可以來揭開庫的那層神秘的面紗了 因為我們對暫存器的操作,即對記憶體的操作,是間接的。是通過庫函式來實現的,也就...
初始STM32標準庫
庫檔案一開始包含五個檔案 htmresc libraries project utilities stm32f10x stdperiph lib um.chm下面一一介紹 裡邊只有兩張,一張cmsis的logo,另一張是st的logo 裡邊是st官方實驗板的例程,目前不會用到。這個是庫幫助文件,我們...