stm32 HardFault_Handler調(diào)試及問題查找方法STM32出現(xiàn)HardFault_Handler故障的原因主要有兩個方面:1、內(nèi)存溢出或者訪問越界。這個需要自己寫程序的時候規(guī)范代碼,遇到了需要慢慢排查。2、堆棧溢出。增加堆棧的大小。
1、基本的GPIO配置,注意,因為需要用到普通IO口作為中斷輸入口,因此是用了IO口德復(fù)用功能,因此必須打開RCC_APB2Periph_AFIO時鐘,負(fù)責(zé)復(fù)用IO無效。2、IO口復(fù)用功能映射3、嵌套中斷向量配置調(diào)試發(fā)現(xiàn)這幾句話是必須
1 __set_PRIMASK(1);//關(guān)總中斷23 /************4 **********/5 __set_PRIMASK(0);//開總中斷
一、使用復(fù)用功能(AF)時,要對端口位配置寄存器進行編程。1)對于復(fù)用的輸入功能,配置必須為上拉/下拉或者浮空;2)對于復(fù)用輸出功能,配置必須為復(fù)用功能輸出模式(推挽,開漏)。對于雙向復(fù)用功能,必須配置為復(fù)
一、RCC_AHBPeriphClockCmd函數(shù)其中RCC_AHBPeriph的取值范圍:二、RCC_APB2PeriphClockCmd函數(shù)其中RCC_APB2Periph的取值范圍:GPIOx[0-15]、高級定時器TIM1,TIM8,高速SPI1,高速異步通信USART1,ADC1,ADC2
在MDK環(huán)境下,終于將3.90版本的UCGUI移植到STM32下了,在網(wǎng)上看到的都是例程代碼,很少看到有關(guān)于在STM32下移植UCGUI的教程方法,為了方便大家,特寫此移植方法,大家可以借鑒(有錯誤之處,望大家指點出來共同討論!
我們經(jīng)常會使用STM32 ADC功能測試外部電壓,在一些精度不高的場合,我們一般就用3.3V作為參考電壓來計算測到的電壓值。不過,這種情況很少見,可能只有單片機學(xué)習(xí)板才會這樣使用。因為我們使用的3.3V穩(wěn)壓芯片,很少有
Systick :系統(tǒng)心跳定時器,提供系統(tǒng)節(jié)拍裸機程序中可作為獨立的延時定時器用途:1.產(chǎn)生操作系統(tǒng)的時鐘節(jié)拍2.便于不同處理器之間程序移植SysTick定時器被捆綁在NVIC中,異常號153.作為一個鬧鈴測量時間用于測量時間,但當(dāng)
1.不要太相信stm32內(nèi)部的IO上下拉,必要的話,在外部接上下拉電阻。2.當(dāng)把JTAG的IO口當(dāng)成普通IO口來使用時,要先禁止JTAG。即:要使用到PB3、PB4、PA13、PA14、PA15時,要先禁止JTAG。在庫函數(shù)中,調(diào)用一下函數(shù):GPIO
一、wm_redraw.c移植我在上一篇筆記中講過如何將ucGUI移植到STM32上開發(fā)裸機程序。在本篇筆記中分析一下wm_redraw.c的移植及源碼。首先打開移植好的ucGUI工程文件,然后將ucGUI\\Sample\\GUI目錄下WM_Redraw.c文件中的
以stm32的TIM2作為例,將其配置成為普通的定時器,計時時間到即觸發(fā)中斷。1:對定時器的基本配置先聲明一個定時器配置用的結(jié)構(gòu)體變量TIM_TimeBaseStructure,具體可以參考STM32提供的TIM庫TIM_TimeBaseStructure.TIM
對于STM32來說軟件復(fù)位有兩種方式:1)采用官方自帶的軟件庫在官方軟件庫的stm32f10x_nvic.c 文件里 直接提供了 系統(tǒng)復(fù)位的函數(shù)/********************************************************************************
當(dāng)SYSCLK等于72M,APB1等于36MAPB2等于72M時,定時器的時鐘為72M。注意圖中這句話:如果APB1/APB2預(yù)分頻器=1則頻率不變,否則頻率x2。如果此時,APB1分頻2,則PCLK1的外部時鐘為36M,此時的定時器時鐘x2為72M;APB2分
Ⅰ、寫在前面學(xué)習(xí)本文之前可以查看我前面的文章:STM32CubeMX介紹、下載與安裝STM32CubeMX使用方法及功能介紹STM32CubeMX新建工程+基本IO配置過程本文接著前面STM32CubeMX文章結(jié)合USART實例,講述關(guān)于STM32CubeMX新建
今天在寫SysTcik_Handler()這個中斷函數(shù)時,總是報錯,明明在開頭定義的全局變量extern u16 ntime,(ntime--寫在stm32f10x_it.c的systick中斷函數(shù)中)但是編譯時總是報錯,百度之后才有了解決方法,之前也注意到過e
指針的定義:自己總結(jié)為,指針是用來存放某種類型變量的地址的變量 比如 unit8 * p = 0x5555 5555 指針p 表示用來存放 unit8類型變量的地址的變量 *指針是變量 *指針是存放地址的變量 *指針是存放某種類
對于keil的啟動代碼(針對STM32F042),添加 備注 和 自己的理解;******************** (C) COPYRIGHT 2014 STMicroelectronics ********************;* File Name : startup_stm32f042.s;* Author : MCD
對STM32任何模塊使用前都要對其初始化、首先就是初始化外設(shè)時鐘,可以簡單看系統(tǒng)時鐘章節(jié)關(guān)于外設(shè)時鐘,看數(shù)據(jù)手冊如下:看門狗由獨立內(nèi)部40M時鐘驅(qū)動,所以不需要我們在初始化時鐘配置寄存器。 讀數(shù)據(jù)手冊可
在許多帖子里看到許多人在使用I2C設(shè)備時,都是使用模擬的I2C,因為ST為了規(guī)避專利而把它設(shè)計得很難用!本人今天也嘗試了一下官方生成的I2C,使用的是CUBEMX生成的I2C,在生成后也遇到了一些小問題,在這里貼出來,為
STM32 DAC簡介大容量的STM32F103具有內(nèi)部DAC,戰(zhàn)艦STM32選擇的是STM32F103ZET6屬于大容量產(chǎn)品,所以是帶有DAC模塊的。STM32的DAC模塊(數(shù)字/模擬轉(zhuǎn)換模塊)是12位數(shù)字輸入,電壓輸出型的DAC。DAC可以配置為8位或12位模