這裡開發板MCU是使用"STM32F103C8T6"做實驗。
1. SYS設定。
*Debug: Serial Wire
*勾選System Wake-Up
2. RCC設定。
High Speed Clock(HES): Crystal/Ceramic Resonator
選擇GPIO port,需要整個port的IO沒有被其他功能占用,這裡選擇先選擇"port B0"為"GPIO_Output",之後會再程式中修改參數。
5. 設定 Clock參數。
*PLL Source Mux: HSE
*System Clock Mux: PLLCLK
*HCLK(MHz): 72
6. 計畫管理設定。
*Project Name: 輸入計畫名稱
*Project Location: 設定存檔路徑
*Toolchain/IDE: MDK-ARM
設定完成按"GENERATE CODE"。
7. 設定DMA初始化參數,將DMA_NORMAL改成DMA_CIRCULAR。
hdma_memtomem_dma1_channel1.Init.Mode = DMA_CIRCULAR;
8. 設定GPIO初始化參數,將GPIO_PIN_0改成GPIO_PIN_All,由只有PB0輸出改成PB Port輸出。
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_All, GPIO_PIN_RESET);
/*Configure GPIO pin : PB0 */
GPIO_InitStruct.Pin = GPIO_PIN_All;
9. 建立一個矩陣存放輸出資料。
/* USER CODE BEGIN PD */
#define DATA_LENGTH 8
uint32_t dma_buff[DATA_LENGTH] = {0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA};
10. 設定DMA開始輸出訊號。
/* USER CODE BEGIN 2 */
HAL_DMA_Start(&hdma_memtomem_dma1_channel1, (uint32_t)dma_buff, (uint32_t)&GPIOB->ODR, DATA_LENGTH);
11. 燒錄MCU後,輸出結果如下所示,使用示波器觀察PB0與PB1的訊號。
沒有留言:
張貼留言