1 bxCAN工作模式 bxCAN有3個(gè)主要的工作模式:初始化模式、正常模式和睡眠模式。 在硬件復(fù)位后,bxCAN工作在睡眠模式以節(jié)省電能,同時(shí)CANTX引腳的內(nèi)部上拉電阻被激活。軟件通過(guò)對(duì)CAN_MCR寄存器的INRQ或SLEEP位置’1’
搞了一天才發(fā)現(xiàn) 在MDK設(shè)置選項(xiàng)中有個(gè)"linker"選項(xiàng)卡 ,需要在Project->Options->Linker中將UseMemoryLayoutfromTargetDialog前面的復(fù)選框勾上 一切就正常了UseMemoryLayoutfromTargetDialog這個(gè)選項(xiàng)有個(gè)“分散加載文
STM32上有很多I/O口,也有很多的內(nèi)置外設(shè),像I2C,ADC,ISP,USART等,為了節(jié)省引出管腳,這些內(nèi)置外設(shè)基本上是與I/O口共用管腳的,也就是I/O管腳的復(fù)用功能。但是STM32還有一特別之處:很多復(fù)用內(nèi)置的外設(shè)的I/O引腳
#include "stm32f10x_lib.h"#include"stdio.h"#define USART1_DR_Base0x40013804#define SENDBUFF_SIZE10240vu8 SendBuff[SENDBUFF_SIZE];vu8 RecvBuff[10];vu8 recv_ptr;void RCC_Configuration(void);void GPIO_Co
在"嵌入式學(xué)習(xí)006_Systick使用(一)"中,詳細(xì)介紹了Systick中寄存器的使用方法,用到了很多函數(shù),實(shí)際上到了3.5版本的標(biāo)準(zhǔn)固件庫(kù)中,移除了相關(guān)驅(qū)動(dòng)函數(shù),用戶必須調(diào)用CMSIS.h中定義的函數(shù),其中CMSIS只提供了一個(gè)S
如圖,STM32的每個(gè)TIMER都有正交編碼器輸入接口,TI1,TI2經(jīng)過(guò)輸入濾波,邊沿檢測(cè)產(chǎn)生TI1FP1,TI2FP2接到編碼器模塊,通過(guò)配置編碼器的工作模式,即可以對(duì)編碼器進(jìn)行正向/反向計(jì)數(shù)。如下圖,編碼器使用了A,B兩相信號(hào)
從PWM輸出實(shí)驗(yàn)的工程開始,加入其他各種功能。LCD屏幕顯示:一、hardware其中timer是產(chǎn)生脈沖的。二、hallibFMC是一個(gè)接口,控制SDRAM和LCD三、#include#include"lcd.h"#include"sdram.h"12四、init()SDRAM_Init();
首先在網(wǎng)上看到大部分移植FreeRTOS 都是選擇修改他的啟動(dòng)文件,我個(gè)人感覺這樣不是很好,畢竟是匯編,當(dāng)你采用不同的芯片型號(hào)時(shí),又要修改不同的xx.S文件,所以我選擇修改FreeRTOSconfig.h文件。1. 下載STM32官方源碼
利用STM32跑UCOS 寫了個(gè)很簡(jiǎn)單的程序,編譯如下Program Size: Code=24562 RO-data=746 RW-data=88 ZI-data=7456以此推算,小于FLASH小于24K RAM小于8K 根本不能考慮STM32的UCOS,只能祼奔,STM32的FLASH到還好滿足些
在STM32單片機(jī)的編程當(dāng)中,中斷函數(shù)的名稱都是xxx_IRQHandler格式的。那當(dāng)編譯程序的時(shí)候是怎么知道這是一個(gè)中斷函數(shù)的呢?每個(gè)中斷都是有入口地址的。程序在執(zhí)行過(guò)程中遇到中斷的時(shí)候,會(huì)先判斷這個(gè)中斷的類型,根據(jù)
ADC的基本概念希望各位網(wǎng)友查閱相應(yīng)的手冊(cè),上面對(duì)ADC有比較詳盡的介紹,包括誤差的分析和消除。這里主要介紹ADC的基本庫(kù)函數(shù)的定義和使用。1.ADC_DeInit函數(shù)的功能是將外設(shè)ADCx的全部寄存器重設(shè)為默認(rèn)值。ADC_DeIni
STM32配置串口需要配置的寄存器包括:1、時(shí)鐘配置,開啟相應(yīng)IO端口的時(shí)鐘,以及串口模塊的時(shí)鐘。串口1模塊時(shí)鐘寄存器:RCC_APB2Periph_USART1;串口1的端口是PA9,PA10,對(duì)應(yīng)的時(shí)鐘寄存器:RCC_APB2Periph_GPIOA;開
作為一個(gè)STM32的菜鳥級(jí)人物,我剛開始接觸STM32時(shí),其實(shí)和當(dāng)年開始學(xué)習(xí)51單片機(jī)的心理是一樣的。茫然,誰(shuí)說(shuō)不是呢?但是,正常的學(xué)習(xí)途徑無(wú)非就是看書,然后敲代碼,最后燒程序,有問(wèn)題就check,然后再繼續(xù)燒,我都懷
STM32 串口 發(fā)送 必須 先檢測(cè) 狀態(tài),否則 第一個(gè) 字節(jié) 無(wú)法 發(fā)出,發(fā)送完畢,必須檢測(cè)發(fā)送狀態(tài)是否完成,否則,發(fā)送不成功,使用stm32f10x調(diào)試串口通訊時(shí),發(fā)現(xiàn)一個(gè)出錯(cuò)的現(xiàn)象,硬件復(fù)位重啟之后,發(fā)送測(cè)試數(shù)據(jù)0x01
1 硬件電路配置這里還是借用前面LED電路我就不貼圖片。2 時(shí)鐘說(shuō)明SysTick和HCK的時(shí)鐘頻率是一樣的庫(kù)函數(shù)代碼如下/***@briefInitializeandstarttheSysTickcounteranditsinterrupt.**@paramticksnumberofticksbetweent
前言:本來(lái)用不到串口,但在最近在讀取傳感器數(shù)據(jù)的時(shí)候數(shù)據(jù)發(fā)生了錯(cuò)誤,被師兄推薦用串口來(lái)檢查一下究竟讀出的數(shù)據(jù)是什么,因此學(xué)習(xí)了串口的使用。事實(shí)證明,串口很有用,也沒(méi)有想象中的那么復(fù)雜...一、關(guān)于串口需要
所謂IAP其實(shí)就相當(dāng)于一個(gè)小小的bootloader 用來(lái)更新程序的很多產(chǎn)品基本都是程序做好后就直接在產(chǎn)線燒錄一次就OK了,但是,但是BUG有時(shí)候是無(wú)可避免的,經(jīng)常有產(chǎn)品裝好后又要重新拆外殼 取下板子重新上燒錄架燒的慘痛
PWM信號(hào)的模式,主要做了如下工作1.設(shè)定TIM信號(hào)周期,該周期就是PWM的周期,后期比較輸出在占空比上會(huì)有變化2.設(shè)定TIM預(yù)分頻值,分頻系數(shù),計(jì)數(shù)模式3.根據(jù)TIM_TimeBaseInitStrcut這個(gè)結(jié)構(gòu)體里面的值初始化TIM4.設(shè)定TI
stm32串口printf輸出,全速執(zhí)行時(shí)老是進(jìn)入中斷入口地址處,如果把中斷函數(shù)屏蔽掉,全速執(zhí)行時(shí)顯示執(zhí)行B,表示找不到中斷入口地址,然后打開中斷函數(shù),則又死掉,通過(guò)把發(fā)送中斷使能關(guān)閉則顯示正常。所以:1、相應(yīng)串口
一、導(dǎo)致異常的原因很多,例如:直接使用未分配空間的指針、棧溢出等一場(chǎng)非法操作便會(huì)使程序進(jìn)入HardFault異常狀態(tài)。下面介紹怎么找出程序中的異常。接下來(lái)在keil_MDK工程中,編譯代碼,并debug,之后全速運(yùn)行,可以