2. 在Region點選"All Layers",之後再點選Name欄位下名稱,按"滑鼠右鍵",選擇"Create" > "Region..."。
3. 輸入名稱後按"OK"。
2. 在Region點選"All Layers",之後再點選Name欄位下名稱,按"滑鼠右鍵",選擇"Create" > "Region..."。
3. 輸入名稱後按"OK"。
1. 在OrCAD中Off-Page Connector只有向右與向左的符號,並沒有雙向符號,這樣無法表現出雙向匯流排的意涵,因此需要自己建立一個雙向Off-Page Connector,在OrCAD的安裝路徑下"..\tools\capture\library"下開啟"capsym.olb"檔。
2. 使用修改後另存新檔的方式建立一個雙向Off-Page Connector,點選"OFFPAGELEFT-L",修改圖示後,點選"File > Save As...",在Save Part As視窗中,名稱修改為"OFFPAGELEFT",按"OK"存檔。
3. 最後就可以在capsym.olb元件庫中看到新增的雙向Off-Page Connector元件。
這裡開發板MCU是使用"STM32F103C8T6"做實驗。
1. SYS設定。
*Debug: Serial Wire
*勾選System Wake-Up
2. RCC設定。
High Speed Clock(HES): Crystal/Ceramic Resonator
3. TIM1設定。
Clock Source: Internal Clock
Channel1: PWM Generation CH1
設定好後,可以看到PIN腳PA8設定成PWM輸出。
4. 設定 Clock參數。
5. TIM1 > Parameter Setting設定。
Prescaler(PSC - 16 bits value) : 72-1
Counter Period(AutoReload Register - 16 bits value): 1000
這裡設定Prescaler為72MHz~1MH範圍, 設定Counter Period為1000~1為頻率範圍,公式如下。
Tim Clock : 72MHz / 72 = 1MHz
Freq: 1MHz / 1000 = 1KHz
6. TIM1 > DMA Setting設定。
按"Add" 增加DMA設定,DMA Request選擇"TIM1_CH1",Direction選擇"Memory To Peripheral", Mode設定成"Normal", Data Width都設定成"Half Word"。
7. 計畫管理設定。
8. 建立一個矩陣,存放PWM高電位的時間,之前設定週期為1KHz,所以矩陣內參數100等於100us。
/* USER CODE BEGIN PD */
#define HPOT 10
uint16_t DataBuf[HPOT] = {900, 200, 300, 400, 500, 600, 700, 800, 900, 0};
9. 設定啟動PWM控制。
/* USER CODE BEGIN 2 */
HAL_Delay(200);
HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t*)&DataBuf, HPOT);
10. 設定PWM訊號輸出一次後關閉。
/* USER CODE BEGIN 0 */
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
{
HAL_TIM_PWM_Stop_DMA(htim, TIM_CHANNEL_1);
}
}
11. PWM輸出結果如下所示,Cursor量測出每一個週期為1KHz,共9個不同頻率的週期。
注意:不知道為什麼HPOT參數給10,最後指出來9個週期,因此矩陣最後一個參數我這裡直接設為0。
這裡開發板MCU是使用"STM32F103C8T6"做實驗。
1. SYS設定。
*Debug: Serial Wire
*勾選System Wake-Up
2. RCC設定。
High Speed Clock(HES): Crystal/Ceramic Resonator
1. 點選"STM32CubeMX"程式。
2. 點選"ACCESS TO MCU SELECTOR",使用選擇MCU型號的方式建立專案。
3. 在"Commercial Part Number"欄位輸入開發板上MCU的型號,之後在"MCUs/MPUs List:"欄位中,快點兩下確定專案使用的MCU型號。
4. 點選"SYS",設定Debug傳輸介面,這裡選擇"Serial Wire",並勾選"System Wake-Up"。
5. 開發板上MCU腳位PC13,有接LED燈,所以點選"PC13"並設定模式為"GPIO_Output"。
6. 選擇"Project Manager"標籤欄,"Project Name"欄位輸入計畫名稱,"Project Location"點選Browse按鍵選擇存檔路徑,"Toolchain / IDE"下拉式選單選擇"MDK-ARM"。
7. 設定完成,點選"GENERATE CODE",產生專案程式,之後跳出開啟Keil C視窗,點選"Open Project"。
8. 開啟Keil C後,選擇main.c,輸入控制GPIO程式。
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(500);// Delay 500ms
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(500);// Delay 500ms
9. 點選"Build"編譯程式,沒有錯誤後按"Download"開始燒錄。
10. 燒錄完成後按開發板上的"Reset"鍵,就可以看到LED在閃爍。
注意: 燒錄時,出現ST-LINK無法連結,請依照下列步驟操作
http://science-boy-not-difficult.blogspot.com/2022/07/keil-c-stm32st-link-connection-error.html
1. 至ARM KEIL官網下載,STM32F1xx的Keil Pack。
2. 點選"Keil MDK"開發工具。
3. 開啟Keil C後,點選"Pack Installer",再選擇"File" > "Import"。
4. 選擇STM32F1xx的Keil Pack檔。
5. 安裝完成後,可以查看安裝結果。
1. 至ST官網下載"STM32CubeMX"安裝檔,並解壓縮。
2. 點選"SetupSTM32CubeMX-6.5.0-Win.exe"執行STM32CubeMX安裝執行檔。STM32CubeMX是STM32產生韌體C語言原始程式專案的工具,產生的專案支援多家IDE開發工具。
3. 按"Next"至下一步。
4. 勾選選項後,按"Next"至下一步。
5. 勾選選項後,按"Next"至下一步。
6. 確認安裝路徑,按"Next"至下一步。
7. 按"Next"至下一步,開始安裝。
8. 安裝完成,按"Next"至下一步。
9. 按"Done"結束安裝程序。
10. 桌面上新增了"STM32CubeMX"的ICON。