初體驗FM33L0-Systick-單發中斷
最近單位上馬了一個 FM33L0的專案,剛剛接觸 ARM 核 MCU,困難肯定是有的,但是作為一個生長在紅旗下的有為青年,困難肯定是用來克服的。
程式碼中的驅動檔案是在官網下載的。
注意編譯器版本 version 6 跟 version 5 的區別,主要是 version 6 支援 c99。
除錯,我用的是 J-LINK SWD 模式,keil 還不能正確識別出晶片型號,在彈出的對話方塊中選擇一個標準的 M0 核心的選項就可以了。
編譯,Preprocessor Symbols 裡面 Define:填上 __VTOR_PRESENT,__DEBUG
,前一個是支援向量表,後一個應該是關於除錯的。
SysTick_Config() 函式要在系統初始化完成之後再呼叫一次,中斷才能正常工作,還沒有弄明白是怎麼回事。
#include "FM33L0XX.h"
#include "fm33l0xx_rcc.h"
#include "fm33l0xx_gpio.h"
void systemInit(void);
void ledOutputCfg(void);
void SysTick_Handler(void)
{
GPIO_ToggleBits(GPIOC,GPIO_Pin_0);
}
int main()
{
SystemInit();
ledOutputCfg();
// SysTick->LOAD = 4000000;
// SysTick->VAL = 0;
// SysTick->CTRL = 0x07;
SysTick_Config(0x1000000);
while(1)
{
}
}
void systemInit(void)
{
RCC_RCHF_InitTypeDef RCHF_InitStruct;
RCC_SYSCLK_InitTypeDef SYSCLK_InitStruct;
__disable_irq();
SysTick_Config(8000000);
for (int i = 0; i < 4000000; i++)
{
}
RCHF_InitStruct.FSEL = RCC_RCHF_CR_FSEL_8MHZ; // RCHF 8M
RCHF_InitStruct.RCHFEN = ENABLE; // 使能 RCHF
RCC_RCHF_Init(&RCHF_InitStruct);
SYSCLK_InitStruct.SYSCLKSEL = RCC_SYSCLK_CR_SYSCLKSEL_RCHF; // RCHF 做主時鐘
SYSCLK_InitStruct.STCLKSEL = RCC_SYSCLK_CR_STCLKSEL_SCLK; // SCLK 做 systick 時鐘
SYSCLK_InitStruct.AHBPRES = RCC_SYSCLK_CR_AHBPRES_DIV1; // AHB 不分頻
SYSCLK_InitStruct.APBPRES = RCC_SYSCLK_CR_APBPRES_DIV1; // APB 不分頻
SYSCLK_InitStruct.SLP_ENEXTI = ENABLE; // 休眠時使能外部中斷取樣
SYSCLK_InitStruct.LSCATS = ENABLE; // LSCLK 自動切換
RCC_SysClk_Init(&SYSCLK_InitStruct);
__enable_irq();
}
void ledOutputCfg(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_PERCLK_SetableEx( PADCLK, ENABLE ); // 使能 APH GPIO 時鐘
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
GPIO_InitStructure.Pin = GPIO_Pin_0;
GPIO_InitStructure.PxINEN = GPIO_IN_Dis;
GPIO_InitStructure.PxODEN = GPIO_OD_Dis;
GPIO_InitStructure.PxPUEN = GPIO_PU_Dis;
GPIO_InitStructure.PxFCR = GPIO_FCR_OUT;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
編輯器要是能左右分欄編輯和預覽,感覺會更好一點。
相關文章
- Electron開發初體驗
- 小程式開發初體驗
- 小程式雲開發初體驗
- 部落格園眾包接單初體驗
- Electron初體驗
- vscode初體驗VSCode
- SpringMVC初體驗SpringMVC
- ollama 初體驗
- laravel初體驗Laravel
- golang 初體驗Golang
- AQS初體驗AQS
- Compose初體驗
- krpano初體驗
- Angular 初體驗Angular
- outline初體驗
- Selenium 初體驗
- Loki 初體驗Loki
- gRPC初體驗RPC
- ReactNative初體驗React
- OpenCV 初體驗OpenCV
- http初體驗HTTP
- Prettier初體驗
- wepy初體驗
- Flutter初體驗Flutter
- Nuxt 初體驗UX
- jQuery初體驗jQuery
- indexedDB 初體驗Index
- Flutter(六)之Flutter開發初體驗Flutter
- 跨平臺開發Flutter初體驗Flutter
- 微信小程式開發初體驗微信小程式
- 1.week 獨立開發初體驗
- web assembly 初體驗Web
- Argo CD初體驗Go
- .Net Aspire初體驗
- Laravel Octane 初體驗Laravel
- go modules 初體驗Go
- 10、Swoole 初體驗
- Kali Nethunter初體驗