
ROM和RAM指的都是半導(dǎo)體存儲器,ROM是ReadOnlyMemory的縮寫,RAM是RandomAccessMemory的縮寫。ROM在系統(tǒng)停止供電的時候仍然可以保持數(shù)據(jù),而RAM通常都是在掉電之后就丟失數(shù)據(jù),典型的RAM就是計算機的內(nèi)存。RAM有兩大
STM32的IAP功能確實方便,以前對此如何實現(xiàn)有所了解,但是一直沒去測試,這兩天來練了下,可謂困難重重,搞了兩天問題也一一解決,下面做些簡要的筆記IAP就是在線應(yīng)用編程,方便程序升級,可以不用打開產(chǎn)品,直接通過
實驗程序:/*******************************led.c*********************************/#include"stm32f4xx.h"//在SYSTEM目錄下可以找到,把ST官方的部分庫抽取出來,組成了一個SYSTEM目錄#include"sys.h"voidLED_Ini
DMA可以認為連接兩個“地址”數(shù)據(jù)通道。DMA共享系統(tǒng)總線,不占用CPU,所以可以實現(xiàn)快速數(shù)據(jù)傳輸。這里以DMA連接存儲器(數(shù)組)和串口(USART1->DR)為例。1 void DMA_init(void)2 {4 RCC->AHBENR|=1DR;//讀外設(shè)串口數(shù)據(jù)
一直都是用STM32做項目中的主控芯片,在編程的時候,之前一直忽視了一個問題,那就是寄存器的位置是如何定義的,為什么用一個USART1->CR操作就能夠給這個CR寄存器賦值?其實這是一個比較底層的問題,不懂這方面的知識
Flash的操作:stm32大容量的flash不僅用來存儲程序代碼,還可用來存儲一些數(shù)據(jù)和系統(tǒng)用戶的參數(shù)。程序的代碼一般保存在從flash開始區(qū)域,剩下的區(qū)域空間大小可以用來存儲用戶數(shù)據(jù)(大小取決于Flash的大小和代碼占用空
棧增長和大端/小端問題是和CPU相關(guān)的兩個問題.1,首先來看:棧(STACK)的問題.函數(shù)的局部變量,都是存放在"棧"里面,棧的英文是:STACK.STACK的大小,我們可以在stm32的啟動文件里面設(shè)置,以戰(zhàn)艦stm32開發(fā)板為例,在startup_s
其實stm32本身的硬件SPI也很好用,但是還是想用軟件來模擬一下PSI的時序。SPI是一種高速的,全雙工,同步串行的通信總線。SPI通信方式相當于是一個環(huán)形結(jié)構(gòu),由CSN、MISO、MOSI、SCLK四線組成,主要是在SCLK時鐘線的
在進行STM32f103的時候,進行中斷分組的相關(guān)概念Cortex-M3允許具有較少中斷源時使用較少的寄存器位指定中斷源的優(yōu)先級,因此STM32把指定中斷優(yōu)先級的寄存器位減少到4位,這4個寄存器位的分組方式如下:第0組:所有4位
1、依據(jù)stm32的類型(主要是flash的大小),定義各種中斷向量表的順序;2、定義數(shù)據(jù)類型3、定義MCU外設(shè)相關(guān)的結(jié)構(gòu)體:4、定義外設(shè)在FLASH中的地址:5、進行外設(shè)寄存器的位定義
一個簡單的工程搭建好之后,進一步就是了解里面的內(nèi)容,也就是學習進入正軌。打開我之前新建的工程,主要調(diào)用的幾個函數(shù)就是今天學習的內(nèi)容,接下來我就講解一下那些內(nèi)容。一、初始化時鐘這里的“時鐘配置”函數(shù)在bs
本文結(jié)合網(wǎng)上的兩篇時鐘分析文章,并結(jié)合本人的理解來分析STM32的時鐘系統(tǒng)。眾所周知,一個微控制器或處理器的運行必須要依賴周期性的時鐘脈沖來驅(qū)動,通常是通過外接晶振來實現(xiàn)的。在學習單片機(51系列,AVR系列,
在源程序中加入如下代碼,包含“stdio.h”。默認使用USART1,確認串口已經(jīng)初始化成功、#pragmaimport(__use_no_semihosting)_sys_exit(intx){x=x;}struct__FILE{inthandle;/*Whateveryourequirehere.Iftheonlyfileyo
輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32的定時器,除了TIM6和TIM7,其他定時器都有輸入捕獲功能。STM32的輸入捕獲,簡單的說就是通過檢測TIMx_CHx上的邊沿信號,在邊沿信號發(fā)生跳變(比如上升沿/下降
STM32有兩個寄存器可以控制IO輸出, 一個是ODR寄存器, 只使用了低16位. 向此寄存器寫數(shù)據(jù), 就可以控制某個引腳的輸出電平.BSRR寄存器是端口位設(shè)置/清除寄存器. 此寄存器和ODR寄存器有類似的功能, 都可以來用設(shè)置GPIO端
看到了一片關(guān)于stm32 nvic的解釋,使用到了階級 和階層的概念,很形象化也很容易理解。鏈接:http://blog.sina.com.cn/s/blog_5f17618501012rpp.htmlNVIC——NestedVectoredInterruptController(嵌套中斷向量控制器)
J-link幾乎可以調(diào)試所有的arm芯片,不得不說是個好東東。這里記錄三種stm32的下載程序方式:1.J-Flash下載(需要用到J-link)2.MDK配置下載(需要用到J-link)3.ISP下載(串口下載,需要用到官配串口下載軟件,用過s
由于當時寫的時候很白菜,h文件和c文件放一塊了,不過加到工程里時也這么一段代碼,無線模塊就能用了,雖不規(guī)范,但用起來還湊合。單片機用的是STM32104VC,無線模塊是淘寶買的NRF24L01,簡單實用,效果不錯。配置文件
簡單實現(xiàn)STM32 CRC32使用使用前記得使能STM32 CRC時鐘//STM32硬件CRC32byte數(shù)據(jù)計算,將數(shù)據(jù)移到最高位,低位補上FFu32stm32_crc32_byte(u8*pBuff,u32len){u32i;u8buff[4];u32*p32=(u32*)buff;CRC->CR=1;//復(fù)位CRC寄存
這個問題大概2009年的時候很多人就在問,請看09年的時候大家給出的若干比喻:http://www.amobbs.com/forum.php?mod=viewthread&tid=3784815&highlight以后的ARM初學者也都在問。筆者也是菜鳥,到網(wǎng)上搜了搜。下面先看