
2、配置完RCC時鍾,F429最高時鍾頻率是180M,另外要注意自己使用的外接晶振的頻率;
3、下面重點介紹I2C配置:

I2C有兩種模式,快速模式(400KHz),標准模式(100KHz),並且作為從機時候具有雙應答地址的功能,地址長度也分為7-bit 和10-bit,在測試用例中,我選擇快速模式,頻率為默認400KHz,7-bit地址長度。

使能DMA和I2C終端,首優先級均為5,這個可以在NVIC選項中自由設置。

DMA的設置在這里最為重要,無論是RX還是TX,均要選擇內存地址遞增模式,並且是單字節遞增,而外設地址則為初始的不遞增。這里不選擇的話,就算通信成功也只能重復發送第一個字節數據。
4、生成代碼,這里選擇Keil5;
5、生成代碼之后,加載了FreeRTOS實時操作系統,但是代碼此時還不能用。這個是ST公司的一個固件庫bug,需要在stm32f4xx_it.c文件的SysTick_Handler函數中添加語句 HAL_IncTick();

因為I2C使用了超時機制,而此超時機制需要提供系統滴答時鍾。
6、如果做為主機,則使用HAL_I2C_Master_Transmit_DMA語句,就可以利用DMA自動發送數據,從機使用HAL_I2C_Master_Receive_DMA語句自動接收數據。
7、測試結果,使用串口將I2C從機接收到“Hello World”打印出來,兩個429芯片管腳都接PB6,PB7。


祝各位使用順利。