freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于stm32的led點(diǎn)陣光筆設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文軟件部分(編輯修改稿)

2024-12-18 15:03 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 鐘 (RTC)和備份寄存器提供電源。如圖表 4 所示 12 圖表 4 電源框圖 低功耗 在系統(tǒng)或電源復(fù)位以后,微控制器處于運(yùn)行狀態(tài)。運(yùn)行狀態(tài)下的 HCLK 為 CPU 提供時(shí)鐘,內(nèi)核執(zhí)行程序代碼。 當(dāng) CPU不需繼續(xù)運(yùn)行時(shí),可以利用多個(gè)低功耗模式來(lái)節(jié)省功耗,例如等待某個(gè)外部事件時(shí)。用戶(hù)需要根據(jù)最低電源消耗,最快速啟動(dòng)時(shí)間和可用的喚醒源等條件,選定一個(gè)最佳的低功耗模式。 STM32F10xxx 有三中低功耗模式: 睡眠模式 (Cortex?M3 內(nèi)核停止,外設(shè)仍在運(yùn)行 ) 停止模式 (所有的時(shí)鐘都以停止 ) 待機(jī)模式 ( 電源關(guān)閉 ) 此外,在運(yùn)行模式下,可以通過(guò)以下方式中的一種降低功耗: 降低系統(tǒng)時(shí)鐘 關(guān)閉 APB 和 AHB總線(xiàn)上未被使用的外設(shè)的時(shí)鐘 通用和復(fù)用 I/O 每個(gè) GPI/O 端口有兩個(gè) 32 位配置 寄存器 (GPIOx_CRL, GPIOx_CRH),兩個(gè) 32位數(shù)據(jù)寄存器 (GPIOx_IDR, GPIOx_ODR),一個(gè) 32 位置位 /復(fù)位寄存器 (GPIOx_BSRR),一個(gè) 13 16 位復(fù)位寄存器 (GPIOx_BRR)和一個(gè) 32 位鎖定寄存器 (GPIOx_LCKR)。每個(gè) I/O 端口的特定硬件特征, GPIO 端口的每個(gè)位可以由軟件分別配置成多種模式。 輸入浮空 輸入上拉 輸入下拉 模擬輸入 開(kāi)漏輸出 推挽式輸出 推挽式復(fù)用功能 開(kāi)漏復(fù)用功能 每個(gè) I/O 端口位可以自由編程,然而 I/0端口寄存器必須按 32位字被訪(fǎng)問(wèn) (不允許半 字或字節(jié)訪(fǎng)問(wèn) )。 GPIOx_BSRR 和 GPIOx_BRR 寄存器允許對(duì)任何 GPIO 寄存器的讀 /更改的獨(dú)立訪(fǎng)問(wèn);這樣,在讀和更改訪(fǎng)問(wèn)之間產(chǎn)生 IRQ 時(shí)不會(huì)發(fā)生危險(xiǎn)。圖表 5 給出了 I/O 端口位的基本結(jié)構(gòu) 圖表 5 I/0端口位的基本結(jié)構(gòu) 外部中斷 /事件控制器( EXTI) 外部中斷 /事件控制器由 19個(gè)產(chǎn)生事件 /中斷要求的邊沿檢測(cè)器組成。每個(gè)輸入線(xiàn)可以獨(dú)立地配置輸入類(lèi)型 (脈沖或掛起 )和對(duì)應(yīng)的觸發(fā)事件 (上升沿或下降沿或者雙邊沿都觸發(fā) )。每個(gè)輸入線(xiàn)都可以被獨(dú)立的屏蔽。掛起寄存器保持著狀態(tài)線(xiàn)的中斷要求。 EXTI 控制器的主要特性如下: 每個(gè)中斷 /事件都有獨(dú)立的觸發(fā)和屏蔽 每個(gè)中斷線(xiàn)都有專(zhuān)用的狀態(tài)位 支持多達(dá) 19 個(gè)中斷 /事件請(qǐng)求 檢測(cè)脈沖寬度低于 APB2 時(shí)種寬度的外部信號(hào) 14 外部中斷 /事件控制器框圖如圖表 6 所示: 圖表 6外部中斷 /事件控制器框圖 如果要產(chǎn)生中斷,必須事先配置好并使能中斷線(xiàn)。根據(jù)需要的邊沿檢測(cè)設(shè)置 2個(gè)觸發(fā)寄存器,同時(shí)在中斷屏蔽寄存器的相應(yīng)位寫(xiě) 1允許中斷請(qǐng)求。當(dāng)外部中斷線(xiàn)上發(fā)生了需要的邊沿時(shí),將產(chǎn)生一個(gè)中斷請(qǐng)求,對(duì)應(yīng)的掛起位也隨之被置 1。在掛起寄存器的對(duì)應(yīng)位寫(xiě) 1,可以清除該中斷請(qǐng)求。如果要為產(chǎn)生事件, 必須事先配置好并使能事件線(xiàn)。根據(jù)需要的邊沿檢測(cè)通過(guò)設(shè)置 2 個(gè)觸發(fā)寄存器,同時(shí)在事件屏蔽寄存器的相應(yīng)位寫(xiě) 1 允許事件請(qǐng)求。當(dāng)事件線(xiàn)上發(fā)生了需要的邊沿時(shí),將產(chǎn)生一個(gè)事件請(qǐng)求脈沖,對(duì)應(yīng)的掛起位不被置 1。通過(guò)在軟件中斷 /事件寄存器寫(xiě) 1,也可以通過(guò)軟件產(chǎn)生中斷 /事件請(qǐng)求。 通過(guò)下面的過(guò)程來(lái)配置 19 個(gè)線(xiàn)路做為中斷源: 配置 19 個(gè)中斷線(xiàn)的屏蔽位 (EXTI_IMR)。 配置所選中斷線(xiàn)的觸發(fā)選擇位 (EXTI_RTSR 和 EXTI_FTSR)。 配置那些控制映像到外部中斷控制器 (EXTI)的 NVIC 中斷通道的使能和屏蔽位,使得 19 個(gè) 中斷線(xiàn)中的請(qǐng)求可以被正確地響應(yīng)。 配置 19 個(gè)事件線(xiàn)的屏蔽位 (EXTI_EMR)。 配置事件線(xiàn)的觸發(fā)選擇位 (EXTI_RTSR 和 EXTI_FTSR)。 配置 19 個(gè)中斷 /事件線(xiàn)屏蔽位 (EXTI_IMR, EXTI_EMR)。 設(shè)置軟件中斷寄存器的請(qǐng)求位 (EXTI_SWIER)。 通用 I/O 端口與 16 個(gè)外部中斷 /事件的連接方式如圖表 7 所示: 15 圖表 7 外部中斷通用 I/O映射 通用定時(shí)器 通用定時(shí)器是一個(gè)通過(guò)可編程預(yù)分頻器驅(qū)動(dòng)的 16 位自動(dòng)裝載計(jì)數(shù)器構(gòu)成。它適用于多種場(chǎng)合,包括測(cè)量輸入 信號(hào)的脈沖長(zhǎng)度 (輸入捕獲 )或者產(chǎn)生輸出波形 (輸出比較和 PWM)。使用定時(shí)器預(yù)分頻器和 RCC 時(shí)鐘控制器預(yù)分頻器,脈沖長(zhǎng)度和波形周期可以在幾個(gè)微秒到幾個(gè)毫秒間調(diào)整。 定時(shí)器是完全獨(dú)立的,而且沒(méi)有互相共享任何資源,它們可以一起同步操作。 通用 TIMx (TIM TIM TIM4 和 TIM5)定時(shí)器功能包括: 16位向上、向下、向上 /向下自動(dòng)裝載計(jì)數(shù)器 16 位可編程 (可以實(shí)時(shí)修改 )預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為 1~ 65535之間的任意數(shù)值。 4 個(gè)獨(dú)立通道:輸入捕獲、輸出比較、 PWM生成 (邊緣或中間對(duì)齊模式 )、單脈沖模 16 式輸出。 使用外部信號(hào)控制定時(shí)器和定時(shí)器互連的同步電路 如下事件發(fā)生時(shí)產(chǎn)生中斷 /DMA: ─更新:計(jì)數(shù)器向上溢出 /向下溢出,計(jì)數(shù)器初始化 (通過(guò)軟件或者內(nèi)部 /外部觸發(fā) ) ─觸發(fā)事件 (計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部 /外部觸發(fā)計(jì)數(shù) )。 ─輸入捕獲 ─輸出比較 ─支持針對(duì)定位的增量 (正交 )編碼器和霍爾傳感器電路 ─觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理 可編程通用定時(shí)器的主要部分是一個(gè) 16 位計(jì)數(shù)器和與其相關(guān)的自動(dòng)裝載寄存器。這個(gè)計(jì)數(shù)器可以向上計(jì)數(shù)、向下計(jì)數(shù)或者向上向下雙向計(jì)數(shù)。此計(jì)數(shù)器時(shí)鐘由預(yù)分頻器 分頻得到。計(jì)數(shù)器、自動(dòng)裝載寄存器和預(yù)分頻器寄存器可以由軟件讀寫(xiě),在計(jì)數(shù)器運(yùn)行時(shí)仍可以讀寫(xiě)。時(shí)基單元包含:計(jì)數(shù)器寄存器 (TIMx_CNT)、預(yù)分頻器寄存器 (TIMx_PSC)、自動(dòng)裝載寄存器 (TIMx_ARR)。圖表 8 為內(nèi)部時(shí)鐘分頻因子為 2 時(shí)的計(jì)數(shù)器時(shí)序圖。 圖表 8 計(jì)數(shù)器時(shí)序圖 整體的系統(tǒng)流程圖 本實(shí)驗(yàn)主要是通過(guò)四個(gè)按鍵來(lái)控制光筆在 32X32 點(diǎn)陣上的動(dòng)作,包括點(diǎn)亮、筆畫(huà)擦除,連字多寫(xiě)及休眠定時(shí)的設(shè)置。具體的系統(tǒng)流程圖如圖表 9: 17 開(kāi) 始 硬 件 初 始 化等 待 按 鍵 進(jìn) 入 是 否 觸 屏掃 描 L E D 屏是 否 有 光 信 號(hào) 返 回待機(jī)頁(yè)面選擇坐 標(biāo) 點(diǎn) 亮整屏擦除筆畫(huà)擦除反顯測(cè)頻數(shù)據(jù)存儲(chǔ)初始化計(jì)數(shù)定時(shí)控制NYNNYY 圖表 9 系統(tǒng)數(shù)據(jù)流圖 32X32 點(diǎn)陣行列掃描的實(shí)現(xiàn) 主控制程序包括系統(tǒng)初始化( GPIO 的設(shè)置,時(shí)鐘的設(shè)置,定時(shí)中斷的設(shè)置等等),點(diǎn)陣掃描控制,按鍵功能的程序(點(diǎn)亮,反顯,擦除,連字多寫(xiě),休眠定時(shí)), 點(diǎn)陣掃描控制程序 分為行掃描與列掃描 , 行掃描由 STM32 的 GPI0C 口通過(guò)對(duì)四片 74LS273 的控制來(lái)實(shí)現(xiàn)循環(huán)點(diǎn)亮點(diǎn)陣的 32 行,同時(shí)通過(guò)對(duì)兩片 74HC154 的控制來(lái)實(shí)現(xiàn) 32 列的循環(huán)點(diǎn)亮,為了盡可能的節(jié)省 GPIO 口,用到了片選,即 當(dāng)需要點(diǎn)亮 某一芯片時(shí) 時(shí), 控制對(duì)應(yīng)的 GPIO 口輸出 0其它芯片輸出 1,只有該 芯 片有效,反之,控制片選無(wú)效, 從而達(dá)到節(jié)省 GPIO 的目的,利用微亮掃描過(guò)程實(shí)現(xiàn) 循環(huán)點(diǎn)亮 1024 個(gè) 點(diǎn)。 具體代碼如下, /***********************************************/ //函數(shù)名 void Lsm() // 功能 列掃描函數(shù),實(shí)現(xiàn)點(diǎn)陣 32 的逐一點(diǎn)亮滅, // 保證每一次只點(diǎn)亮一只 LED /***********************************************/ void Lsm(void) { unsigned char j。 Dl_Bit = 0x01。 Sm_Row = 0。 //列掃描次數(shù)初值 18 Gpioc_Ph = Gpioc_Phamp。0xf0。 //GPIOC 緩存低四位清零 Gpioc_Ph = Gpioc_Phamp。 Dl_Bit。 //緩存列掃描信息 GPIO_Write(GPIOC,Gpioc_Ph)。 //微亮輸出列 for(j = 0。j 8。j++) //掃描前 8列 { if(Bhzl) { Dl_Bit_Temp = S_Yle[Sm_Line+16][Clzl]amp。Dl_Bit。 } else { Dl_Bit_Temp = S_Yle[Sm_Line][Clzl]amp。Dl_Bit。 } if(0 ==Dl_Bit_Temp) { Gpioc_Ph = Gpioc_Ph|0xf00。 //不亮 } else { if(0 == Clzl) { //第一個(gè) 8位點(diǎn)亮 Gpioc_Ph = Gpioc_Ph|0xe00。 Gpioc_Ph = Gpioc_Phamp。0xeff。 } else if(1 == Clzl) { //第二個(gè) 8位點(diǎn)亮 Gpioc_Ph = Gpioc_Ph|0xd00。 Gpioc_Ph = Gpioc_Phamp。0xdff。 } else if(2 == Clzl) { //第三個(gè) 8位點(diǎn)亮 Gpioc_Ph = Gpioc_Ph|0xb00。 Gpioc_Ph = Gpioc_Phamp。0xbff。 } else if(3 == Clzl) { //第四個(gè) 8位點(diǎn)亮 Gpioc_Ph = Gpioc_Ph|0x700。 Gpioc_Ph = Gpioc_Phamp。0x7ff。 } } Gpioc_Ph = Gpioc_Phamp。0xf00。 //GPIOC 緩存低八位清零 Gpioc_Ph = Gpioc_Phamp。Dl_Bit。 //緩存列掃描信息 GPIO_Write(GPIOC,Gpioc_Ph)。 //微亮輸出列 Delay_Ms(1)。 Sm_Row++。 19 Dl_Bit = 1 。 //左移一位 if(0x100 == Dl_Bit)Dl_Bit = 0x01。 } }/***************************************************/ //函數(shù)名 void Lsm( voi) // 功能 點(diǎn)陣掃描函數(shù),實(shí)現(xiàn)點(diǎn)陣 1024 個(gè)點(diǎn)的逐一點(diǎn)亮 // 從第一行開(kāi)始按列掃描方式,從左往右逐一點(diǎn)亮 32 列上的 //32 個(gè)點(diǎn) ,再換第二行再依次點(diǎn)亮,直到 1024 個(gè)點(diǎn)都亮滅一次 /******************************************************/ void Dzsm(void) { unsigned char k。 Gpioc_Ph = Gpioc_Ph|0xe00。//微亮片選第一個(gè) 8位 Gpioc_Ph = Gpioc_Phamp。0xeff。//微亮片選第一個(gè) 8位 GPIO_Write(GPIOC,Gpioc_Ph)。 Bhzl = 0。 //行小于 16 Sm_Line = 0。 //行掃描次數(shù) for(k = 0。k 16。k++) //行循環(huán) 16 次 0~15 { Blzl = 0。 //列小于 8 Clzl = 0。 Gpiod_Ph = Gpiod_Ph|0xd0。//微亮片選低位 Gpiod_Ph = Gpiod_Phamp。0xd0。 Gpiod_Ph = Gpiod_Ph|Sm_Line。 GPIO_Write(GPIOD,Gpiod_Ph)。//微亮輸出列 Lsm()。 //列掃描 Blzl = 1。 //列大于 8 小于 16 Clzl = 1。 Gpiod_Ph = Gpiod_Ph|0xd0。//微亮片選低位 Gpiod_Ph = Gpiod_Phamp。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1