『壹』 請問如何寫單片機的庫函數
你說的是3.0以上的固件庫嗎?
systeminit()函數在主程序中被rcc_configuration()函數調用,完成系統時鍾的配置功能。我看過這個函數的具體內容,是直接操作寄存器來完成配置。如果使用stm32f10x_rcc.c文件中的函數來完成時鍾配置,和systeminit()的順序和效果一樣。
當然,為了保證兼容性,使低版本固件庫寫的程序運行,就還有stm32f10x_rcc.c存在,像早期版本的rcc_configuration()函數就是使用這個文件中提供的函數來完成時鍾配置的。
補充:是的,systeminit()函數完成了時鍾初始化的功能。另外systick的使用也變簡單了,以前要幾個函數完成初始化,現在只要一個就行。
你看看3.0版本固件system_stm32f10x.c中的代碼是怎樣的吧。其中是對rcc寄存器直接賦值操作,和stm32f10x_rcc.c中相關的函數作用一樣。
如果在程序中要使用埠、外設等,由於這些東西需要時鍾才能工作,所以還是需要stm32f10x_rcc.c中的函數來完成時鍾的控制。
『貳』 stm32配置 RCC->CR=0x0000000; RCC->CFGR=0x00000000; 我配置了之後 晶元依然啊工作的哦
先調用SystemInit函數來初始化單片機,就是設置單片機的始終,然後調用mian主函數正式開始你編寫的程序。
『叄』 請問STM32程序中的這幾個頭文件,各有什麼作用
都是.c文件,不是頭文件啊。stm32f10x_it.c 中斷處理函數都放在這個文件裡面。main.c 這個不用解釋了吧stm32f10x.h 這個是頭文件,它包含了stm32的一些常用宏,寄存器結構體的定義,高版本的庫還放著中斷向量表。stm32f10x_rcc.c 這個文件里的固件函數包含了一些對復位、時鍾的控制的函數stm32f10x_gpio.c這個文件里的固件函數包含了對GPIO的操作函數stm32_eval.c 這個是st公司為其製作的評估板寫的程序system_stm32f10x.c主要包含了對系統時鍾設置,一般是對倍頻時鍾的設置 具體可以看一下文件內容啊,呵呵 歡迎追問 追問: 您好,非常感謝您!我是剛剛學習STM32。我還有幾個問題。
三、GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;
u8 count=0;
四、void Delay(vu32 nCount);
希望您能幫助我,我會給您高分的。 回答: 1、因為引腳本來就是16個的啊,從pin0~pin15,GPIOA口有16個腳,GPIOB也有16個,GPIOC也有16個,是這樣區分的,它是相對於一組io口的細分,ALL來代替的是選中了這一組io 2、不可以,呵呵你要選擇到底是GPIOA還是GPIOB還是...C還是...D等等的GPIO_Pin_03、GPIO_InitTypeDef、ErrorStatus是兩個結構體,u8是定義的unsigned char你可以通過keil的go to definition選項找到它們的定義,這個是標准C的定義 4、不是,這兩個是函數。你的C語言基礎太差,估計很多都看不懂吧,呵呵,建議先補習一下C語言 歡迎追問 追問: 嗯,是的C語言基礎不太好,以前學單片機主要是用匯編。
『肆』 求解,關於stm32單片機的io口使能,為什麼我看視頻教程的時候沒有設置使能,就能使用io口,但是
開啟GPIO時鍾就行了
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
這是調用的庫函數 stm32f10x_rcc.c中有
看這個函數(用戶函數)里有這一句:
void LED_GPIO_Config(void)
{
/*定義一個GPIO_InitTypeDef類型的結構體*/
GPIO_InitTypeDef GPIO_InitStructure;
/*開啟LED的外設時鍾*/
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
/*選擇要控制的GPIOB引腳*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
/*設置引腳模式為通用推挽輸出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*設置引腳速率為50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*調用庫函數,初始化GPIOB0*/
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*選擇要控制的引腳*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* 關閉所有led燈 */
GPIO_SetBits(GPIOB, GPIO_Pin_0);
/* 關閉所有led燈 */
GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3);
}
『伍』 rcc-csr單片機csr是什麼意思
ADC_CSR是一個變數名0x03表示十六進制的03,0x為十六進制的標志ADC_CSR=0x03就表示將十六進制的03賦值給變數ADC_CSR
『陸』 32位單片機中按下按鍵之後燈閃爍的rcc函數是哪個
閃爍一般是要延時的。 空指令。TIM。systick。PWM. DAC都行。
『柒』 STM32單片機中RCC_APB2PeriphClockCmd的作用是設置時鍾但是是設置什麼時鍾,其中的參數是什麼
void RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
1、第一個參數選外設埠。
2、第二個選enable or disable。
3、直接看庫源文件STM32F10x_StdPeriph_Driversrcstm32f10x_rcc.c,1090行,已經寫明了可用的參數。
(7)單片機rcc擴展閱讀:
STM32的使用原理:
除新增的功能強化型外設介面外,STM32互連系列還提供與其它STM32微控制器相同的標准介面,這種外設共用性提升了整個產品家族的應用靈活性,使開發人員可以在多個設計中重復使用同一個軟體。新ST的M32的標准外設包括10個定時器、兩個12位1-Msample/s 模數轉換器 (交錯模式下2-Msample/s)、兩個12位數模轉換器、兩個I2C介面、五個USART介面和三個SPI埠。
新產品外設共有12條DMA通道,還有一個CRC計算單元,像其它STM32微控制器一樣,支持96位唯一標識碼。低功耗模式共有四種,可將電流消耗降至兩微安。從低功耗模式快速啟動也同樣節省電能;啟動電路使用STM32內部生成的8MHz信號,將微控制器從停止模式喚醒用時小於6微秒。
『捌』 STM32 RCC系統初始化失敗 單片機跑不起來
/* Flash 2 wait state */
//FLASH_SetLatency(FLASH_Latency_2);
/* Enable Prefetch Buffer */
//FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
不能被注釋掉,這是在配置flash的等待周期,48 MHz < SYSCLK ≤ 72 MHz
時是需要有兩個等待周期得,否則flash有可能進入防寫,詳細請看St的STM32F10xxx Flash programming這個文檔,其中FLASH_ACR寄存器的最低3位就是配置等待周期的,這是必須要配的
或者你直接調用Systeminit就不用自己配時鍾了
『玖』 什麼時候需要用到RCC
需要用到外設的重映射功能時才需要使能AFIO的時鍾
外部中斷(EXTI)中與AFIO有關的寄存器是AFIO-EXTICR1、2、3,它們是用來選擇EXTIx外部中斷的輸入腳之用
『拾』 【ARM】RCC->APB2ENR|=1<<5; //使能PORTD時鍾 RCC->APB2ENR=1<<5; 以上兩句代碼效果差別是什麼
這基本上有兩個答題方向, 端看問題人想要知道的是什麼.
語法
在語法上, = 與 |= 是不同概念.
a = 2 ; // a變數為2
a |= 2 ; // 等同於 a = (a | 2); 只有a=0時, a才會是2
OR語法若不清楚, 網路上很容易查到Digital Logic方面的介紹.
單片機功能
RCC->APB2ENR, 指的是APB2(第二組Peripheral Bus)各區塊IP的Clock使能或禁能.
在語法上的作用同前,
(1) = 1<<5 ; // 將APB2ENR這一rigister內容設定為(1<<5), 也就是只有bit5代表的硬體使能生效.
(2) |= 1<<5 ; // 將APB2ENR這一rigister內容OR(1<<5), 也就是除原有硬體使用設定外, 額外增加bit5代表的硬體, 可以工作.
由於題目沒有列出單片機的型別, 各家也不一樣, 這邊引用STM32F1的某型號,
當使用 ( = 1<<5) 此APB2 bus上僅有PORTD有效;
當使用 ( |= 1<,5) 此APB2 bus上, 原有設定不變, 額外增加使能PORTD.