
最近在玩車載液晶儀表,之前用Arduino+USART液晶,后來發(fā)現(xiàn)Arduino性能不夠,就轉(zhuǎn)向STM32。由于需要在液晶屏上顯示手機信息,先是采用了普通點陣字庫方案,個人感覺效果慘不忍睹,滿屏的鋸齒。翻遍網(wǎng)絡(luò),沒發(fā)現(xiàn)比較合
STM32的硬件I2C不太好用,N多人深受其困擾,本人也不例外.所以干脆一不做二不休,用模擬的I2C算了,雖然速度不及硬件I2C,在一般的應(yīng)用中還是不錯的.帖上代碼和協(xié)議分析圖,造福廣大受STM32的I2C困擾的朋友,哈哈!為了跟硬件
下面編寫下USB鍵盤的程序,依然在CustomHID工程上修改。依舊最先修改的是usb_desc.c文件。我們從設(shè)備描述符開始講述。設(shè)備描述符需要修改下bMaxPacketSize(最大包長度)域為0x08,因為被本次的工程最大通訊長度就是8字
一。 寄存器和固定庫開發(fā)的區(qū)別和聯(lián)系STM32的寄存器很多,不容易記憶,調(diào)用固定庫函數(shù),設(shè)置好入口參數(shù),從而操作相應(yīng)的寄存器。二。MDK下寄存器地址和名稱映射關(guān)系GPIO各端口的地址GPIOA 的寄存器的地址=GPIOA 基地
1總體描述:DM9000A的PHY能夠以10BASE-T的標(biāo)準(zhǔn)在UTP3\\4\\5或者以100BASE-T的標(biāo)準(zhǔn)在UTP5上接口通信。它的自動協(xié)商功能是夠自動配置DM9000A最大地發(fā)揮出自身性能。它同時支持IEEE 802.3X全雙工數(shù)據(jù)流通信。2、結(jié)構(gòu)圖:3
最近在項目中要用到飛思卡爾的MMA7660這一款傳感器,我在STM32中使用的是模擬I2C來讀寫它的寄存器,閑話不多說,代碼如下:1、IO引腳配置和模擬I2C的方法/********************(C)COPYRIGHT2015ASTO****************
在NVIC中有一個硬fault狀態(tài)寄存器(HFSR),它指出產(chǎn)生硬fault的原因。如果不是由于取向量造成的,則硬fault服務(wù)例程必須檢查其它的fault狀態(tài)寄存器,以最終決定是誰上訪的。1、寄存器描述首先查看硬故障寄存器,判別
STM32和STM8的串口貌似都可以一次發(fā)送9位數(shù)據(jù),最近才注意到這個,在此記錄。一般不帶奇偶校驗位的串口數(shù)據(jù):起始位(1)+數(shù)據(jù)位(8)+停止位(1)帶奇偶校驗位的串口數(shù)據(jù):起始位(1)+數(shù)據(jù)位(8)+校驗位(1)+停止
//位帶操作,實現(xiàn)51類似的GPIO控制功能//具體實現(xiàn)思想,參考第五章(87頁~92頁).//IO口操作宏定義#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)
STM32三種啟動模式對應(yīng)的存儲介質(zhì)均是芯片內(nèi)置的,它們是: 1)用戶閃存 = 芯片內(nèi)置的Flash。2)SRAM = 芯片內(nèi)置的RAM區(qū),就是內(nèi)存啦。3)系統(tǒng)存儲器 = 芯片內(nèi)部一塊特定的區(qū)域,芯片出廠時在這個區(qū)域預(yù)置了一段Boot
使用STM32的芯片的朋友,可以很方便的將移植到GD32上面,下面就具體移植過程分享一下:整個移植過程可以分為硬件和軟件兩個方面。硬件方面:首先要確定先前所使用ST芯片的flash大小和管腳數(shù)量,然后替換成GD相同大小
原因是JTAG已經(jīng)被占用,當(dāng)然不能再用JTAG操作啦!此時要保證CPU不進(jìn)入正常運行狀態(tài),才能使用JTAG。解決方案:options for target ---->Debug---->右上方---->use 后面的setting按鈕------>左上方Ort下面的JTAG變?yōu)镾
網(wǎng)上關(guān)于發(fā)送字符的代碼大多如下:USART_SendData(USART1, (uint8_t)ch);while( USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET);其實咋一看是說的通的,但是在仔細(xì)看手冊的時候發(fā)現(xiàn) TC 和 TXE 標(biāo)志位在復(fù)位的時
Note: keil生成的.axf或者.elf都是可以執(zhí)行的鏡像文件。IAP User Program 需要注意的問題要設(shè)置好好中斷向量的問題,假設(shè)User Program 開始地址是(0x08008000),那么中斷向量就必須設(shè)在在0x08008000處,中斷向量要
STM32位帶操作舉例intmain(void){GPIO_InitTypeDefGPIO_InitStruction;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruction.GPIO_Pin=GPIO_Pin_8;GPIO_InitStruction.GPIO_Mode=GPIO_Mode_Out_
一、STM32通用定時器原理STM32系列的CPU,有多達(dá)8個定時器,其中TIM1和TIM8是能夠產(chǎn)生三對PWM互補輸出的高級定時器,常用于三相電機的驅(qū)動,它們的時鐘由APB2的輸出產(chǎn)生。其它6個為普通定時器,時鐘由APB1的輸出產(chǎn)生
STM32時鐘框圖如下:重要的時鐘:1、HSI:高速內(nèi)部時鐘信號 stm32單片機內(nèi)帶的時鐘 (8M頻率)精度較差2、HSE:高速外部時鐘信號精度高 來源(1)HSE外部晶體/陶瓷諧振器(晶振)(2)HSE用戶外部時鐘3、LSE:低速外部晶體 32.7
看了很多關(guān)于配置濾波器和設(shè)置ID(StdID ExtID)的文章,發(fā)現(xiàn)都有問題。經(jīng)過自己實驗測試,得到的結(jié)果如下:(1) 設(shè)置ID 如果你想使用的StdID,則ExtID可以隨意設(shè)置,只需要配置正確StdID即可。同時,需要設(shè)置IDE=0
在STM32平臺上編寫如下代碼:int main(){while(1);}BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632編譯后,就會發(fā)現(xiàn)這么個程序已用了1600多的RAM,這1600多的RAM跑哪兒去了,分析map,你會發(fā)現(xiàn)是
1.堆和棧大小定義大小在startup_stm32f2xx.sStack_Size EQU0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem SPACE Stack_Size__initial_sp; Heap Configuration; Heap Size (in Bytes) ; Heap_Size E