為了相容freertos,所以將延時函式統一規範,後續使用方便移植。此延時針對無晶振,示例為系統倍頻64mhz,型號:stm32f103c8t6。
新建system資料夾,新增兩個檔案,delay.c和delay.h
以下為delay.c內容:其中系統已倍頻為64m
#include "stm32f10x.h"
double fac_us=0;
static rcc_clockstypedef rcc_clocks;
void delay_init()
void delay_us(unsigned int nus)
};
}void delay_ms(unsigned short nms)
以下為delay.h內容
#ifndef _delay_h_
#define _delay_h_
void delay_us(unsigned int nus);
void delay_ms(unsigned short nms);
void delay_init(void);
#endif
以下大體解釋:
1.對於delay_init函式,systick_clksourceconfig(systick_clksource_hclk);這句主要設定systick時鐘源,對於為什麼不能8分頻,主要是為了和freertos統一。
2.rtos統一節拍為1ms,所以延時函式裡沒有額外增加rtos支援,對於ms級延時,直接呼叫作業系統的系統延時。
對於無作業系統呼叫:
void main()
}
其中systick_config()函式,主要是設定裝載值,設定systick時鐘為系統主時鐘,開啟systick中斷。delay_init()函式再次設定了systick時鐘源為主時鐘源。
對於freertos系統呼叫:
void main()
測試:
針對freertos,分別建立兩個任務,分別延時1s來翻轉兩個led,其中任務一,用delay_us(1000000);任務二,用vtaskdelay(1000);測試結果正常,led燈翻轉時間相同。
stm32f103外部中斷
void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...
STM32F103啟動檔案
目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...
FreeRTOS移植到STM32F103步驟
二 mdk下移植freertos 目前官方提供的最新版本是v9.0.0,freertos原始碼在解壓目錄下的路徑為 freertos v9.0.0rc2 freertos source iar資料夾的內容,裡面都是跟微控制器底層相關的,我們以stm32f103為例,保留arm cm3資料夾即可。ar...