1、依據(jù)stm32的類(lèi)型(主要是flash的大小),定義各種中斷向量表的順序;2、定義數(shù)據(jù)類(lèi)型3、定義MCU外設(shè)相關(guān)的結(jié)構(gòu)體:4、定義外設(shè)在FLASH中的地址:5、進(jìn)行外設(shè)寄存器的位定義
一個(gè)簡(jiǎn)單的工程搭建好之后,進(jìn)一步就是了解里面的內(nèi)容,也就是學(xué)習(xí)進(jìn)入正軌。打開(kāi)我之前新建的工程,主要調(diào)用的幾個(gè)函數(shù)就是今天學(xué)習(xí)的內(nèi)容,接下來(lái)我就講解一下那些內(nèi)容。一、初始化時(shí)鐘這里的“時(shí)鐘配置”函數(shù)在bs
本文結(jié)合網(wǎng)上的兩篇時(shí)鐘分析文章,并結(jié)合本人的理解來(lái)分析STM32的時(shí)鐘系統(tǒng)。眾所周知,一個(gè)微控制器或處理器的運(yùn)行必須要依賴(lài)周期性的時(shí)鐘脈沖來(lái)驅(qū)動(dòng),通常是通過(guò)外接晶振來(lái)實(shí)現(xiàn)的。在學(xué)習(xí)單片機(jī)(51系列,AVR系列,
在源程序中加入如下代碼,包含“stdio.h”。默認(rèn)使用USART1,確認(rèn)串口已經(jīng)初始化成功、#pragmaimport(__use_no_semihosting)_sys_exit(intx){x=x;}struct__FILE{inthandle;/*Whateveryourequirehere.Iftheonlyfileyo
輸入捕獲模式可以用來(lái)測(cè)量脈沖寬度或者測(cè)量頻率。STM32的定時(shí)器,除了TIM6和TIM7,其他定時(shí)器都有輸入捕獲功能。STM32的輸入捕獲,簡(jiǎn)單的說(shuō)就是通過(guò)檢測(cè)TIMx_CHx上的邊沿信號(hào),在邊沿信號(hào)發(fā)生跳變(比如上升沿/下降
STM32有兩個(gè)寄存器可以控制IO輸出, 一個(gè)是ODR寄存器, 只使用了低16位. 向此寄存器寫(xiě)數(shù)據(jù), 就可以控制某個(gè)引腳的輸出電平.BSRR寄存器是端口位設(shè)置/清除寄存器. 此寄存器和ODR寄存器有類(lèi)似的功能, 都可以來(lái)用設(shè)置GPIO端
看到了一片關(guān)于stm32 nvic的解釋?zhuān)褂玫搅穗A級(jí) 和階層的概念,很形象化也很容易理解。鏈接:http://blog.sina.com.cn/s/blog_5f17618501012rpp.htmlNVIC——NestedVectoredInterruptController(嵌套中斷向量控制器)
J-link幾乎可以調(diào)試所有的arm芯片,不得不說(shuō)是個(gè)好東東。這里記錄三種stm32的下載程序方式:1.J-Flash下載(需要用到J-link)2.MDK配置下載(需要用到J-link)3.ISP下載(串口下載,需要用到官配串口下載軟件,用過(guò)s
由于當(dāng)時(shí)寫(xiě)的時(shí)候很白菜,h文件和c文件放一塊了,不過(guò)加到工程里時(shí)也這么一段代碼,無(wú)線(xiàn)模塊就能用了,雖不規(guī)范,但用起來(lái)還湊合。單片機(jī)用的是STM32104VC,無(wú)線(xiàn)模塊是淘寶買(mǎi)的NRF24L01,簡(jiǎn)單實(shí)用,效果不錯(cuò)。配置文件
簡(jiǎn)單實(shí)現(xiàn)STM32 CRC32使用使用前記得使能STM32 CRC時(shí)鐘//STM32硬件CRC32byte數(shù)據(jù)計(jì)算,將數(shù)據(jù)移到最高位,低位補(bǔ)上FFu32stm32_crc32_byte(u8*pBuff,u32len){u32i;u8buff[4];u32*p32=(u32*)buff;CRC->CR=1;//復(fù)位CRC寄存
這個(gè)問(wèn)題大概2009年的時(shí)候很多人就在問(wèn),請(qǐng)看09年的時(shí)候大家給出的若干比喻:http://www.amobbs.com/forum.php?mod=viewthread&tid=3784815&highlight以后的ARM初學(xué)者也都在問(wèn)。筆者也是菜鳥(niǎo),到網(wǎng)上搜了搜。下面先看
如圖:為原子的串口下載電路在CH340的數(shù)據(jù)手冊(cè)上有引腳的介紹以及作用:這兩個(gè)引腳:DTR#和RTS#都是 輸出類(lèi)型,MCUISP(一鍵下載工具),會(huì)控制CH340這兩個(gè)引腳的高低電平狀態(tài),通過(guò)控制DTR#和RST#這兩個(gè)引腳的高低電平
方法:static const uint8_t s_acBmpLogo030[len] __attribute__((at(0X800F000)))={0x80,0xC0,0xC0,0xC0,0xC0,0x80,xxxxxxx} 編譯之后可在.map文件看到其分配到的地址0x0800f000 0x0000005c Data RO 4013 .A
STM8和STM32都配備了獨(dú)立看門(mén)狗,其作用之大不言而喻。以下為STM8及STM32的獨(dú)立看門(mén)狗使用例:對(duì)于STM32單片機(jī):#define SYS_IWDG_OPEN IWDG->KR=0xCCCC;#define SYS_IWDG_FEED IWDG->KR=0xAAAA;void SystemIW
每個(gè)中斷有自己的可編程的中斷優(yōu)先級(jí)【 有唯一對(duì)應(yīng)的 中斷優(yōu)先級(jí)寄存器 】.由于CM3支持 硬件中斷嵌套,所以可以有 256 級(jí)的可編程優(yōu)先級(jí)和 256級(jí)中斷嵌套【 書(shū)上稱(chēng):搶占(preempt) 優(yōu)先級(jí)】
stm32的使用和51單片機(jī)不同,單片機(jī)接上晶振接上電源 直接就可以操作io口,但是stm32的時(shí)鐘是經(jīng)過(guò)了倍頻器放大頻率的,然后再由鎖相環(huán)輸出穩(wěn)定的時(shí)鐘頻率。這么做的帶來(lái)了很多好處,雖然stm32的外部時(shí)鐘只有8Mhz ,經(jīng)
為實(shí)現(xiàn)高效的C語(yǔ)言代碼編寫(xiě),將Matlab/Simulink應(yīng)用在基于ARMCortex—M3內(nèi)核STM32微控制器的嵌入式系統(tǒng)軟件開(kāi)發(fā)中。利用專(zhuān)門(mén)針對(duì)STM32系列微控制器開(kāi)發(fā)的Simulink模塊庫(kù)RapidSTM32及其工具套件,對(duì)嵌入式系統(tǒng)進(jìn)行建模與仿真。仿真成功后,在模型編譯器中把其翻譯成高效的MDKC語(yǔ)言代碼,實(shí)現(xiàn)了STM32嵌入式系統(tǒng)軟件代碼的快速生成。實(shí)驗(yàn)結(jié)果表明,所生成的軟件代碼在STM32嵌入式目標(biāo)系統(tǒng)中運(yùn)行狀況良好。該方法在軟件設(shè)計(jì)效率和易維護(hù)性等方面優(yōu)于手工編寫(xiě)的代碼方法。
UART接收發(fā)送數(shù)據(jù):平臺(tái):STM32F401 discovery版此代碼用的UART6,TX,RX對(duì)應(yīng)的PIN腳是PC6,PC7如圖:代碼如下:步驟一:初始化串口的GPIO,USART,并且配置上UART的RX中斷voidUSART6_Config(void){USART_InitTypeDefU
一、MDK設(shè)置在工程的Target中MicroLib二、main函數(shù)之前添加如下編譯代碼:#define COM USART1//串口選擇初始化,USART1為串口1,USART2為串口2#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#el
市場(chǎng)上涌現(xiàn)各種價(jià)格親民的經(jīng)濟(jì)型微控制器,助力新一代開(kāi)發(fā)者創(chuàng)造令人興奮的新型嵌入式應(yīng)用。如今的開(kāi)發(fā)工具非常好用,軟硬件均呈現(xiàn)模塊化趨勢(shì),插接安裝簡(jiǎn)單容易,使得產(chǎn)品設(shè)計(jì)評(píng)估和原型開(kāi)發(fā)周期大幅縮短。