娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32紅牛開發板非固件庫控制LED

發布者:gamma14最新更新時間:2024-10-25 來源: cnblogs關鍵字:STM32  紅牛開發板  LED 手機看文章 掃描二維碼
隨時隨地手機看文章

摘要


STM32紅牛開發板上的5個LED,接在GPIOF6~10腳,輸出低電平時,LED亮。這樣我們設置GPIOF的相關寄存器,讓其輸出低電平就可以讓LED亮。因為沒有用到ST提供的固件庫,所以是直接對寄存器的內存地址讀寫,即對一個指向該地址的指針變量進行讀寫。并且該變量必須為易變型的,即用volatile定義,這樣是為了告訴編譯器不要去優化這個變量,導致其它一些寄存器的數據變化。GPIOx是掛載在APB2高速外設總線上的,最大頻率是72MHZ,所以我們除了了打開HSE(外部高速時鐘)并關閉內部高速時鐘(開機默認選擇了HSI)外,還要打開APB2總線的時鐘。


 


一、寄存器地址映射


外設的基址PERIPH_BASE 為0x40000000,APB1外設在前面,所以基址APB1PERIPH_BASE等于PERIPH_BASE,APB2外設基址APB2PERIPH_BASE為PERIPH_BASE + 0x10000,最后AHB基址是PERIPH_BASE + 0x20000.


       GPIOx是掛載在APB2總線了的,從(APB2PERIPH_BASE + 0x0800)開始,每0x400字節空間為一組IO口的寄存器。所以GPIOF_BASE為(APB2PERIPH_BASE + 0x1C00)。結合芯片手冊,GPIOF各寄存器地址如下:


/***********GPIOF外設寄存器地址映射********************/

    #define    GPIOF_CRL             (*(volatile unsigned long *) (GPIOF_BASE + 0x00))

    #define    GPIOF_CRH             (*(volatile unsigned long *) (GPIOF_BASE + 0x04))

    #define    GPIOF_IDR             (*(volatile unsigned long *) (GPIOF_BASE + 0x08))

    #define    GPIOF_ODR             (*(volatile unsigned long *) (GPIOF_BASE + 0x0C))

    #define    GPIOF_BSRR             (*(volatile unsigned long *) (GPIOF_BASE + 0x10))

    #define    GPIOF_BRR             (*(volatile unsigned long *) (GPIOF_BASE + 0x14))

    #define    GPIOF_LCKR         (*(volatile unsigned long *) (GPIOF_BASE + 0x18)


時鐘控制寄存器基址RCC_BASE 為(AHBPERIPH_BASE + 0x1000),由同樣方法可以得出RCC各寄存器地址如下:



/****************RCC寄存器地址映射*******************/

    #define    RCC_CR                         (*(volatile unsigned long *) (RCC_BASE + 0x00))

    #define    RCC_CFGR                     (*(volatile unsigned long *) (RCC_BASE + 0x04))

    #define    RCC_CIR                     (*(volatile unsigned long *) (RCC_BASE + 0x08))

    #define    RCC_APB2RSTR                (*(volatile unsigned long *) (RCC_BASE + 0x0C))

    #define    RCC_APB1RSTR                (*(volatile unsigned long *) (RCC_BASE + 0x10))

    #define    RCC_AHBENR                 (*(volatile unsigned long *) (RCC_BASE + 0x14))

    #define    RCC_APB2ENR                 (*(volatile unsigned long *) (RCC_BASE + 0x18))

    #define    RCC_APB1ENR                 (*(volatile unsigned long *) (RCC_BASE + 0x1C))

    #define    RCC_BDCR                    (*(volatile unsigned long *) (RCC_BASE + 0x20))

    #define    RCC_CSR                     (*(volatile unsigned long *) (RCC_BASE + 0x24))


至此,得到上面數據,對這些寄存器操作,我們就可以控制紅牛開板的上的5個LED了。


二、程序編寫


1、啟動代碼


啟動代碼直接使用ST提供的默認啟動代碼,由于我的開發板是大容量FLASH的STM32F103ZET6,所以用的啟動代碼是startup_stm32f10x_hd.s。


2、時鐘配置RCC_Configuration


跳轉到MAIN函數后,程序第一件要做的事情就是配置系統時鐘。由HSE直接作為系統時鐘。


Void RCC_Configuration()

{

RCC_CR |= (1<<16);             // HSE振蕩器開啟


    RCC_CR &= ~(1<<0);         // HSI振蕩器關閉


RCC_CFGR |= (1<<2); // HSE作為系統時鐘


RCC_APB2ENR |= (1<<7); //打開GPIOF端口時鐘


}


3、GPIOF配置


GPIOF配置成通用開漏輸出模式,代碼如下:


void GPIO_Configuration()

{

    GPIOF_CRH = 0x11111111;            //GPIO 15~8


    GPIOF_CRL = 0x11111111;            //GPIO 7 ~0


}



4、GPIO置位/復位


置位/復位功能通過對端口位設置/清除寄存器(GPIOx_BSRR)操作實現,代碼如下:


void GPIO_SetBits( u16 GPIO_Pin)

{

   

  GPIOF_BSRR = GPIO_Pin;


}

void GPIO_ResetBits(u16 GPIO_Pin)

{

   

  GPIOF_BSRR = GPIO_Pin<<16;


}


三、總結


此程序只是用來演示脫離ST提供的固件庫控制GPIO口輸出。通過此程序來入門非固件庫的STM32程序設計。


關鍵字:STM32  紅牛開發板  LED 引用地址:STM32紅牛開發板非固件庫控制LED

上一篇:一例使用STM32外設庫設置串口速度與實際不一樣的解決
下一篇:STM32 cannot enter debug mode錯誤

推薦閱讀最新更新時間:2025-05-24 00:16

stm32編寫基本led
LED流水燈程序初始化流程 //1.定義結構體變量 GPIO_InitTypeDef GPIO_InitStructure; //2.開啟GPIOC的外部時鐘,不同的外設開啟不同的時鐘,IO口復用時兩個時鐘都要開啟。stmf10x_rcc.h RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //3.設置要控制的GPIO管腳 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; //4.設置管腳模式,推挽輸出 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
[單片機]
使用STM32單片機點亮LED
有一人,登場于金庸先生的《神雕俠侶》,以大理段氏“一陽指”自成一派,武學修為登峰造極,“天下五絕”之一,號稱“南帝”,他就是“一燈大師”。如今,武林中逐漸被遺忘的“一燈大師”,卻活躍在另一個行業——嵌入式開發中。 傳說,每一個成功的MCU(俗稱單片機)開發組中,都有一名“一燈大師”,他精通所有開發板的點燈方法,對于企業引入的新開發板,總是勤學苦練,從點燈開始,快速掌握新開發板的編程要點,帶領團隊走向勝利。 成為“一燈大師”,離不開持續的修行,離不開對一招一式的勤學苦練。本文將講解如何通過編程來控制STM32點亮一個LED。 學習環境: 1.軟件:Keil5 2.硬件:STM32開發板(筆者使用信盈達公司的M4開發板,芯片型
[單片機]
使用<font color='red'>STM32</font>單片機點亮<font color='red'>LED</font>
stm32 PUSH 按鍵控制LED閃爍
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configu
[單片機]
STM32定時器之控制LED燈循環顯示
/* 名稱:STM32定時器之控制LED燈循環顯示 說明:對于STM32來說,其定時器要比C51的定時器要多,功能也更復雜。 就數目來說來說,STM32的定時器可以分為基本定時器,通用定時器和高級定時器(還包括Systick、看門口定時器和窗口定時器)。就STM32F103,一般來說,它有2個高級定時器TIM1和TIM8、4個通用定時器TIM2/3/4/5、2個基本定時器TIM6和TIM7。而C51一般只有幾個定時器。 就功能來說, STM32中: 對于基本定時器,其功能就是和C51差不多,只有定時功能。 對于通用定時器,它的功能有定時、輸出比較、輸入捕獲。雖然目前,我也不知道后面兩個功能是干啥的。 對于高級定
[單片機]
stm32 在IAR的第一個程序 點亮led
//使用前要建立好了工程的模板,這個可以參考我的stm32工程模板的建立一文 1:工程文件加入我們的led驅動主要是由led.h和led.c組成,再根據這個寫自己的main 2: led.c的編寫 #include led.h //這個 是led.h這個頭文件 void led_gpio_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//這個的配置可以查看原理圖我的是 GPIOE GPIO_InitStructure.GPIO_P
[單片機]
采用STM32 單片機的太陽能LED街燈解決方案
  隨著化石類能源的日益減少,以及溫室氣體的過度排放導致全球變暖問題越來越受到重視,人們一方面在積極開發各類可再生新能源,另一方面也在倡導節能減排的綠色環保技術。太陽能作為取之不盡、用之不竭的清潔能源,成為眾多可再生能源的重要代表;而在照明領域,壽命長、節能、安全、綠色環保、色彩豐富、微型化的LED固態照明也已被公認為世界一種節能環保的重要途徑。太陽能-LED街燈同時整合了這兩者的優勢,利用清潔能源以及高效率的LED實現綠色照明。   本文介紹的太陽能-LED街燈方案,能自動檢測環境光以控制路燈的工作狀態,最大功率點追蹤(MPPT)保證最大太陽能電池板效率,恒電流控制LED,并帶有蓄電池狀態輸出以及用戶
[電源管理]
采用<font color='red'>STM32</font> 單片機的太陽能<font color='red'>LED</font>街燈解決方案
基于STM32的全彩LED顯示屏系統的設計
  LED顯示屏是利用LED點陣模塊或像素單元組成的一種現代平面顯示屏幕,具有發光效率高、使用壽命長、視角范圍大、色彩豐富以及對室內外環境適應能力強等優點。20世紀80年代后期,它在全世界迅速發展起來,并很快成為大屏幕平板顯示的代表性主流產品;近年來,隨著藍色LED產品價格的快速下降,全彩色LED顯示屏的價格逐步降低,市場需求急劇增長,應用日益普遍。目前的LED顯示屏控制系統多采用ARM處理器來完成整個系統的功能,這種控制系統在數據處理速度上存在很大的局限,影響顯示效果的連續性。基于此,在分析了STM32微處理器總線結構特點的基礎上,提出了STM32+FPGA的控制系統方案,該方案充分了利用STM32微處理器的靈活的儲器控制技術和
[電源管理]
基于<font color='red'>STM32</font>的全彩<font color='red'>LED</font>顯示屏系統的設計
STM32 關于HAL庫硬件SPI要注意的問題總結
利用STM32CUbeMx編寫程序,大大方便了開發,最近做的項目利用到了 STM32CUbeMx的硬件SP,這里對SPI的使用做一個總結。   HAL庫里的硬件SPI主要有以下幾個庫函數: /*  hspi1:spi1 硬件通道,temp_val:發送的數據,re_val:接收的數據,1:數據長度,1000:超時時間  */   HAL_SPI_TransmitReceive(&hspi1, &temp_val, &re_val, 1, 1000); // 一邊接受一邊發送數據   HAL_SPI_Transmit(&hspi1,&temp,sizeof(temp),10);  //發送數據   HAL_SPI_Re
[單片機]
<font color='red'>STM32</font> 關于HAL庫硬件SPI要注意的問題總結
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 涟源市| 获嘉县| 从江县| 彭泽县| 盱眙县| 龙川县| 台北市| 桂平市| 兰州市| 铁力市| 潢川县| 盐津县| 刚察县| 吉木乃县| 福贡县| 乌鲁木齐市| 西华县| 金溪县| 文登市| 平邑县| 萝北县| 沈阳市| 明水县| 北安市| 尖扎县| 陆川县| 惠安县| 翁牛特旗| 杭锦旗| 司法| 增城市| 南丰县| 肃北| 攀枝花市| 揭西县| 隆昌县| 资溪县| 阿勒泰市| 广州市| 长顺县| 石渠县|