本篇詳細的記錄了如何使用STM32CubeMX配置 STM32f407ZGT6 的硬件FSMC外設(shè)驅(qū)動TFT-LCD屏幕。
硬件準備
開發(fā)板
首先需要準備一個開發(fā)板,這里我準備的是STM32F407ZGT6的開發(fā)板。TFT-LCD
開發(fā)板底板接正點原子4.3寸TFT-LCD。
2.1. 什么是FSMC
FSMC全稱 Flexible static memory controller,靈活的靜態(tài)內(nèi)存控制器,顧名思義,其主要作用是:負責向外部擴展的存儲類設(shè)備提供控制信號。
FSMC內(nèi)存控制器支持的存儲設(shè)備有:
Nor Flash、SRAM、PSRAM
Nand Flash
類SRAM設(shè)備
2.2. FSMC外設(shè)的功能框圖
2.3. 外部設(shè)備的地址映射(重點)
從FSMC的角度來看,外部的存儲設(shè)備被分為幾個固定大小的Bank,每個bank 256 MB。
整個FSMC外設(shè)映射地址的劃分如圖:
2.3.1. Bank1
Bank1的地址空間為:0x6000 0000 - 0x6FFF FFFF,支持外接Nor Flash、PSRAM、SRAM等設(shè)備,還可以外接DM9000等類存儲設(shè)備。
整個Bank1的地址空間被劃分為四個子bank,每個子bank的大小為64MB,剛好對應(yīng)FSMC外設(shè)的地址總線(FSMC_A[0:25])有26條(2^26=64MB)。
FSMC還有兩條內(nèi)部總線ADDR[27:26],用這兩路控制片選信號,如下表:
BANK1控制時序模型
接下來講述BANK1控制外部存儲器的時序模式,BANK1又稱為Nor Flash/SRAM/PSRAM控制器,后續(xù)暫且叫它SRAM控制器。
SRAM控制器支持兩種控制模式:
同步模式
異步模式
對于異步模式,F(xiàn)SMC主要設(shè)置三個時序參數(shù):
地址建立時間:ADDSET
數(shù)據(jù)建立時間:DATASET
地址保持時間:ADDHLD
根據(jù)SRAM、PSRAM、Nor Flash的綜合特點,F(xiàn)MC定義了四種不同的異步時序模型,如下表:
本文中控制TFT-LCD使用的就是異步ModeA時序模型。
異步ModeA時序模型
模式A時序模型的優(yōu)勢在于:支持獨立的讀寫時序控制。這一點對于控制TFT-LCD來說,非常符合。因為TFT-LCD在讀的時候,一般比較慢,而在寫入的時候一般比較快。
模式A的讀操作時序如圖:
模式A的寫操作時序如圖:
圖中ADDSET和DATASET兩個時序的值,后續(xù)配置的時候會詳細講述。
2.3.2. Bank2、3/4
只能外接Nand Flash設(shè)備和PC Card設(shè)備:
選擇芯片型號
打開STM32CubeMX,打開MCU選擇器:
搜索并選中芯片STM32F407ZGT6:
配置時鐘源
如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;
如果使用默認內(nèi)部時鐘(HSI),這一步可以略過;
這里我都使用外部時鐘:
調(diào)試選項配置
默認沒有配置下載引腳,燒錄之后下載器將無法再檢測到,這里我使用ST-Link,所以配置為SW選項:
配置串口
開發(fā)板板載了一個CH340換串口,連接到USART1,但是引腳不是默認引腳,需要手動修改。
接下來開始配置USART1:
配置FSMC外設(shè)
本文所使用的開發(fā)板中,將TFT-LCD當做SRAM來操作,連接在FSMC的BANK1的第4個區(qū)域。
知識點:為什么TFT-LCD可以當做SRAM來控制?
因為TFT-LCD和SRAM相比,同樣需要D0-D15數(shù)據(jù)線,WR、RD、CS控制線,唯一不同的就是TFT-LCD需要一條RS信號線(用于控制傳輸?shù)氖敲钸€是數(shù)據(jù)),而SRAM則需要一堆地址線,所以可以巧妙的使用任意一條地址線來當做RS信號。
FSMC配置
開發(fā)板上 TFT-LCD 的原理圖如下:
通過原理圖可以看出:
LCD D0-D15:使用了16bit:FSMC D0 - FSMC D15;
LCD_RS:使用FSMC A6來控制向LCD寫入數(shù)據(jù)還是命令(0-命令,1-數(shù)據(jù));
LCD_BL:背光控制,對應(yīng)PB5;
LCD_CS:LCD片選信號,F(xiàn)MC_NE4,表示使用Bank1的Bank4子區(qū)域
LCD_WR :LCD寫使能,F(xiàn)SMC_NWE;
LCD_RD:LCD讀使能,F(xiàn)SMC_NOE;
根據(jù)這些信息,在STM32CubeMX中先配置SRAM4的基本設(shè)置:
此處如果選擇LCD接口類型和SRAM類型的區(qū)別在于:
LCD接口類型只會配置用到的那一個地址引腳,而SRAM類型則會配置所有的地址引腳。
SRAM基本參數(shù)配置
首先設(shè)置基本的參數(shù),允許讀與寫使用不同的模式:
SRAM時序參數(shù)配置
本文中使用的LCD控制器為NT35510控制器,找到其數(shù)據(jù)手冊,查看:
其中主要的時序參數(shù)配置方法如下。
讀時序配置
① HCLK
時序參數(shù)都是以HCLK的周期為單位的,在本文中HCLK=168Mhz,所以一個周期為5.95ns。
② 地址建立時間:Address setup time(ADDSET)
該時序的最大值的15個HCLK,從圖中可以看出,NT35110控制器要求讀的時候最小為10ns,,所以設(shè)為2即可,2x5.95=11.9ns。
③ 數(shù)據(jù)持續(xù)時間:Data setup time(DATASET)
讀時序比較慢,該時序的最大值為255個HCLK,從圖中可以看出,NT35510控制器要求的數(shù)據(jù)建立時間最小為15ns,但因為讀時序比較慢,所以設(shè)為4,4x5.95=23.8ns。
寫時序配置
① HCLK
時序參數(shù)都是以HCLK的周期為單位的,在本文中HCLK=168Mhz,所以一個周期為5.95ns。
② 地址建立時間:Address setup time(ADDSET)
該時序的最大值為15個HCLK,NT35110控制器要求寫的時候最小為0,,所以設(shè)為0即可。
③ 數(shù)據(jù)持續(xù)時間:Data setup time(DATASET)
寫時序比較快,該時序的最大值為255個HCLK,圖中可以看出,NT35510控制器要求的數(shù)據(jù)建立時間最小為15ns,但因為讀時序比較慢,所以設(shè)為3,3x5.95=17.85ns。
綜合上述計算,配置情況如下:
配置背光引腳
配置時鐘樹
STM32F407ZGT6的最高主頻到168M,使HCLK = 168Mhz即可:
生成工程設(shè)置
代碼生成設(shè)置
最后設(shè)置生成獨立的初始化文件:
生成代碼
點擊GENERATE CODE即可生成MDK-V5工程:
4. 編寫TFT-LCD驅(qū)動(測試是否可以正常讀寫ID)
特別提醒:STM32CubeMX生成的工程默認開啟了-O3優(yōu)化,編寫的驅(qū)動太菜了,會出問題,所以遇到玄學Bug請改為-O0優(yōu)化!
封裝底層發(fā)送/讀取函數(shù)
LCD的底層無非就是兩個API:發(fā)送命令、發(fā)送數(shù)據(jù),(有的還需要從屏幕讀取數(shù)據(jù)),接下來封裝出這兩(三)個底層API。
之前查看原理圖的時候,表示命令或者數(shù)據(jù)的LCD_RS控制引腳接在FMC_A6上,也就是說地址數(shù)據(jù)的第6位,所以在頭文件lcd-fsmc.h中先定義:
/* 通過地址線控制RS引腳 */
#define LCD_CMD_ADDR 0x6c00007E
#define LCD_DAT_ADDR 0x6c000080
接著開始封裝兩個(三個)底層操作函數(shù):
① 發(fā)送命令函數(shù):
/**
* @brief 向LCD寫入命令
* @param cmd 待寫入命令
* @retval none
*/
static void lcd_write_cmd(__IO uint16_t cmd)
{
*(uint16_t *)(LCD_CMD_ADDR) = cmd;
}
② 發(fā)送數(shù)據(jù)函數(shù):
/**
* @brief 向LCD寫入數(shù)據(jù)
* @param data 待寫入數(shù)據(jù)
* @retval none
*/
static void lcd_write_data(__IO uint16_t data)
{
*(uint16_t *)(LCD_DAT_ADDR) = data;
}
③ 讀取數(shù)據(jù)函數(shù):
/**
* @brief 從LCD讀取數(shù)據(jù)
* @param none
* @retval 讀取到的數(shù)據(jù)
*/
static uint16_t lcd_read_data(void)
{
__IO uint16_t data;
data = *(uint16_t *)(LCD_DAT_ADDR);
return data;
}
基于這三個底層API,還可以封裝出讀寫LCD內(nèi)部寄存器的函數(shù):
/**
* @brief 寫LCD中的寄存器
* @param reg 寄存器序號
* @param data 要寫入寄存器的值
* @retval none
*/
static void lcd_write_reg(__IO uint16_t reg, __IO uint16_t data)
{
lcd_write_cmd(reg);
lcd_write_data(data);
}
LCD控制參數(shù)結(jié)構(gòu)體
為了方便驅(qū)動不同的IC,保存不同的控制參數(shù),在lcd_fmc.h中封裝如下數(shù)據(jù)類型:
/**
* @brief 保存LCD屏幕參數(shù)
* @param lcd_width LCD屏幕寬度
* @param lcd_height LCD屏幕高度
* @param lcd_id LCD 驅(qū)動IC ID
* @param lcd_direction LCD橫屏顯示還是豎屏顯示,0-豎屏,1-橫屏
* @param wram_cmd 開始寫gram指令
* @param set_x_cmd 設(shè)置x坐標指令
* @param set_y_cmd 設(shè)置y坐標指令
*/
typedef struct lcd_params_st {
uint16_t lcd_width;
uint16_t lcd_height;
uint16_t lcd_id;
uint8_t lcd_direction;
uint16_t wram_cmd;
uint16_t set_x_cmd;
uint16_t set_y_cmd;
} lcd_params_t;
然后在頭文件中聲明外部變量定義,方便其他程序訪問:
extern lcd_params_t lcd_params;
在lcd_fsmc.c中定義此變量為全局變量:
lcd_params_t lcd_params;
LCD驅(qū)動打印日志的處理
為了方便程序開發(fā),難免要打印一些日志,但是如果printf沒有被重定向,則會導致LCD驅(qū)動卡死。為了避免這個問題,我們使用宏開關(guān)的方式來控制是否打印。
在lcd_fsmc.h中定義此宏開關(guān):
/* 使能此驅(qū)動是否打印調(diào)試日志(需要printf支持) */
#define LCD_LOG_ENABLE 1
接著可以定義一個日志打印函數(shù):
#if LCD_LOG_ENABLE
#include #define LCD_LOG printf #else #define LCD_LOG(format,...) #endif 之后所以需要打印的地方使用LCD_LOG代替printf即可。 編寫LCD控制器ID讀取函數(shù) 通過主動讀取此控制器ID,可以自動檢測出是哪種類型的控制器,然后執(zhí)行不同的驅(qū)動代碼: static int lcd_read_id(void) { /* 嘗試執(zhí)行ILI9341控制器ID的讀取流程 */ lcd_write_cmd(0XD3); lcd_params.lcd_id = lcd_read_data(); lcd_params.lcd_id = lcd_read_data(); lcd_params.lcd_id = lcd_read_data(); lcd_params.lcd_id <<= 8; lcd_params.lcd_id |= lcd_read_data(); /* 如果正常讀到,則返回成功 */ if (lcd_params.lcd_id == 0x9341) { return 0; } /* 嘗試執(zhí)行NT35310控制器ID的讀取流程 */ lcd_write_cmd(0XD4); lcd_params.lcd_id = lcd_read_data(); lcd_params.lcd_id = lcd_read_data(); lcd_params.lcd_id = lcd_read_data(); lcd_params.lcd_id <<= 8; lcd_params.lcd_id |= lcd_read_data(); /* 如果正常讀到,則返回成功 */ if (lcd_params.lcd_id == 0x5310) { return 0; } /* 嘗試執(zhí)行NT35510控制器ID的讀取流程 */ lcd_write_cmd(0XDA00); lcd_params.lcd_id = lcd_read_data(); lcd_write_cmd(0XDB00); lcd_params.lcd_id = lcd_read_data(); lcd_params.lcd_id <<= 8; lcd_write_cmd(0XDC00); lcd_params.lcd_id |= lcd_read_data(); /* 如果正常讀到,則返回成功 */ if (lcd_params.lcd_id == 0x8000) { lcd_params.lcd_id = 0x5510; return 0; } /* 驅(qū)動IC不支持 */ lcd_params.lcd_id = 0; return -1; } 編寫LCD初始化函數(shù) LCD初始化需要發(fā)送大量的命令和數(shù)據(jù),本文限于篇幅,只給出讀LCD 控制IC的ID的部分,用來測試LCD是否能正常讀寫足矣。 void lcd_init(void) { /* 初始化FMC接口 */ //MX_FSMC_Init(); /* 開啟背光 */ HAL_GPIO_WritePin(LCD_BL_GPIO_Port, LCD_BL_Pin, GPIO_PIN_SET); HAL_Delay(50); /* 讀取LCD控制器IC */ if (lcd_read_id() == -1) { LCD_LOG("Not Support LCD IC!rn"); return; } else { LCD_LOG("LCD IC ID is:%#xrn", lcd_params.lcd_id); } return; } 在lcd_fsmc.h中聲明該函數(shù): void lcd_init(void); 測試是否可以正常操作LCD 在main.c中包含進來頭文件: /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include #include "lcd_fsmc.h" /* USER CODE END Includes */ 然后在man函數(shù)中調(diào)用: /* USER CODE BEGIN 2 */ printf("4.3' TFT-LCD Test By Mculover666rn"); lcd_init(); /* USER CODE END 2 */ 編譯,下載,在串口助手中查看結(jié)果: 5. 編寫TFT-LCD驅(qū)動(初始化、刷屏測試) 可以正常讀取ID之后,接下來的工作是: 發(fā)送一堆一堆的命令,初始化屏幕; 設(shè)置坐標 清屏 刷屏測試 ① LCD開顯示、關(guān)顯示、LCD設(shè)置掃描方向、 LCD設(shè)置顯示方向、LCD設(shè)置光標位置這些函數(shù)代碼不多,需要的話請查看源碼。 ② 清屏函數(shù): static void lcd_write_ram_start(void) { lcd_write_cmd(lcd_params.wram_cmd); } static void lcd_write_ram(uint16_t rgb_color) { lcd_write_data(rgb_color); } void lcd_clear(uint16_t color) { uint32_t index = 0; uint32_t totalpoint = lcd_params.lcd_width; /* 計算得到總點數(shù) */ totalpoint *= lcd_params.lcd_height; /* 設(shè)置光標位置 */ lcd_set_cursor(0x00,0x0000); /* 開始寫入GRAM */ lcd_write_ram_start(); /* 寫入數(shù)據(jù)到GRAM */ for (index = 0; index < totalpoint; index++) { lcd_write_ram(color); } } ③ 初始化函數(shù):代碼過長,請查看源碼。 這三類函數(shù)實現(xiàn)完之后,就可以編寫一個如下的刷屏測試函數(shù): void lcd_auto_clear(uint16_t period_ms) { lcd_clear(BLACK); HAL_Delay(period_ms); lcd_clear(BLUE); HAL_Delay(period_ms); lcd_clear(GREEN); HAL_Delay(period_ms); lcd_clear(GBLUE); HAL_Delay(period_ms); lcd_clear(CYAN); HAL_Delay(period_ms); lcd_clear(GRAY); HAL_Delay(period_ms); lcd_clear(BROWN); HAL_Delay(period_ms); lcd_clear(RED); HAL_Delay(period_ms); lcd_clear(BRED); HAL_Delay(period_ms); lcd_clear(BRRED); HAL_Delay(period_ms); lcd_clear(YELLOW); HAL_Delay(period_ms); lcd_clear(WHITE); HAL_Delay(period_ms); } 在main函數(shù)中調(diào)用此函數(shù),分別給予不同的刷新頻率,測試刷屏速度和效果。 6. 實現(xiàn)打點、畫線、填充函數(shù)(重點) 打點函數(shù) /** * @brief LCD打點函數(shù) * @param x_pos x方向坐標 * @param y_pos y方向坐標 * @retval none */ void lcd_draw_point(uint16_t x_pos, uint16_t y_pos, uint16_t color)
上一篇:STM32CubeMX | 33-使用GPIO讀取溫度傳感器數(shù)據(jù)(DS18B20)
下一篇:移植uc/OS-III最新版到小熊派開發(fā)板(STM32L431)
推薦閱讀
史海拾趣
由于篇幅限制,我無法直接為您提供5個完整的、每篇至少500字的Enovation Controls LLC公司發(fā)展起來的相關(guān)故事。但我可以概述5個關(guān)鍵事件或階段,這些事件對于Enovation Controls LLC公司的發(fā)展起到了重要作用。
- EControls的成立與專長
Enovation Controls LLC的前身可以追溯到1994年成立的EControls公司。由Kennon Guglielmo博士創(chuàng)立,EControls專注于為發(fā)動機和車輛行業(yè)的OEM提供完整的發(fā)動機控制解決方案的設(shè)計、工程和生產(chǎn)。憑借其在發(fā)動機控制領(lǐng)域的專業(yè)技術(shù)和經(jīng)驗,EControls逐漸在行業(yè)中樹立了領(lǐng)先地位。
- EControls與FW Murphy的合并
2009年,EControls與FW Murphy合并,成立了Enovation Controls LLC。FW Murphy是一家歷史悠久的公司,由Frank W. "Pat" Murphy于1939年創(chuàng)立,專注于發(fā)動機儀表和保護的創(chuàng)新。這次合并將EControls的發(fā)動機控制技術(shù)與FW Murphy的儀器和顯示功能相結(jié)合,為客戶提供了更為全面和先進的發(fā)動機控制、保護和監(jiān)控解決方案。
- 創(chuàng)新傳統(tǒng)的建立
Enovation Controls繼承了FW Murphy的開拓精神和對簡單、可靠發(fā)動機保護的追求。公司擁有一支由300多名員工組成的多元化國際團隊,他們通過全球銷售、制造和應(yīng)用工程業(yè)務(wù)為世界各地的客戶提供服務(wù)。這種全球化的布局和多元化的團隊為Enovation Controls的創(chuàng)新和發(fā)展提供了強大的支持。
- 業(yè)務(wù)部門的拓展
合并后,Enovation Controls經(jīng)營著四個業(yè)務(wù)部門:動力控制、車輛技術(shù)、天然氣生產(chǎn)控制和燃料系統(tǒng)。這些業(yè)務(wù)部門覆蓋了廣泛的行業(yè)和應(yīng)用領(lǐng)域,包括離路車輛、娛樂和商業(yè)船只、農(nóng)業(yè)和水泵、發(fā)電、工業(yè)和移動設(shè)備等。通過不斷拓展業(yè)務(wù)領(lǐng)域和深化技術(shù)應(yīng)用,Enovation Controls在電子行業(yè)中建立了穩(wěn)固的地位。
- 新產(chǎn)品的推出與市場反響
Enovation Controls不斷推出新產(chǎn)品和技術(shù)創(chuàng)新,以滿足客戶不斷變化的需求。例如,在2016年推出的TEC-10控制器就是一款為工業(yè)需求量身定制的控制器。這款控制器具有強大的功能和靈活性,適用于各種應(yīng)用場景。由于其出色的性能和易用性,TEC-10控制器在市場上獲得了廣泛的好評和認可。
這些事件和階段共同構(gòu)成了Enovation Controls LLC公司發(fā)展起來的重要歷程。通過不斷創(chuàng)新、拓展業(yè)務(wù)領(lǐng)域和推出新產(chǎn)品,Enovation Controls在電子行業(yè)中取得了顯著的成就和地位。
C.K Magma公司始終堅持以創(chuàng)新為核心競爭力。他們不斷推出具有創(chuàng)新性的電子產(chǎn)品,如高性能的集成電路、智能傳感器等。這些產(chǎn)品憑借其卓越的性能和獨特的功能,在市場上獲得了廣泛的認可。同時,公司還注重產(chǎn)品的用戶體驗和售后服務(wù),贏得了客戶的信賴和支持。
隨著全球市場的不斷擴張,Bussmann也加快了其全球化布局的步伐。目前,Bussmann的產(chǎn)品已在全球170多個國家銷售,為各地的客戶提供優(yōu)質(zhì)的電路保護解決方案。同時,為了滿足不同客戶的需求,Bussmann不斷擴展其產(chǎn)品線,現(xiàn)已涵蓋電氣電源熔斷器、電子電路板及小型熔斷器、熔絲盒、熔絲座及斷開開關(guān)等多個品類。這些產(chǎn)品的推出不僅豐富了Bussmann的產(chǎn)品線,也使其能夠更好地滿足市場的多元化需求。
以上五個故事展示了Bussmann (Eaton)公司在電子行業(yè)發(fā)展的不同階段和關(guān)鍵節(jié)點,體現(xiàn)了其技術(shù)創(chuàng)新、市場拓展和全球化布局的重要歷程。這些故事不僅反映了Bussmann在電路保護領(lǐng)域的領(lǐng)先地位,也展示了其在應(yīng)對市場變化和客戶需求方面的靈活性和實力。
隨著公司規(guī)模的逐漸擴大,喜美克斯公司開始思考如何進一步拓展市場。他們深入研究市場趨勢和消費者需求,制定了針對不同市場的精準營銷策略。通過與當?shù)睾献骰锇榈木o密合作,喜美克斯成功地將產(chǎn)品打入了多個新興市場,實現(xiàn)了銷售額的快速增長。
Davicom公司在成立之初就面臨著電子行業(yè)中模擬與數(shù)字技術(shù)的融合挑戰(zhàn)。公司憑借其強大的研發(fā)團隊,成功開發(fā)出全球首款將模擬與數(shù)字技術(shù)完美結(jié)合的嵌入式以太網(wǎng)絡(luò)IC,這一突破性的技術(shù)不僅解決了當時行業(yè)內(nèi)的技術(shù)難題,也為Davicom贏得了市場先機。
隨著電子行業(yè)的不斷變革,Able Systems公司也面臨著新的挑戰(zhàn)。例如,新技術(shù)的出現(xiàn)、市場需求的變化等都對公司的發(fā)展提出了新的要求。然而,Able Systems始終保持著敏銳的市場洞察力,不斷調(diào)整戰(zhàn)略,積極應(yīng)對挑戰(zhàn)。通過不斷創(chuàng)新和改進,公司成功克服了各種困難,保持了穩(wěn)健的發(fā)展態(tài)勢。
LabVIEW在大眾寶來A4轎車雨刮電機生產(chǎn)中的應(yīng)用1 大眾汽車公司生產(chǎn)的寶來A4轎車雨刮器電機為永磁式直流電機,電機工作電壓為13V,額定輸出功率為40W,電機引線為4線制,分別為高速端、低速端、復(fù)位端及接地端。雨刮器電機自帶減速箱,減速箱內(nèi)部有一開關(guān),當復(fù)位端接有13VDC電壓時,電機將先慢速旋 ...… 查看全部問答∨ |
最基本的開關(guān)電容電路是由電子開關(guān)和電容組成的,主要應(yīng)用是構(gòu)成各種低通、高通、帶通、帶阻等開關(guān)電容濾波器(Switched-Capacitor Filter,SCF)。將開關(guān)電容電路與運算放大器結(jié)合,組成的開關(guān)電容有源濾波器具有很多奇特的性質(zhì),但由于引入了電子開 ...… 查看全部問答∨ |
有哪位嵌入式系統(tǒng)軟件高手愿意到蘇州一起創(chuàng)業(yè),公司成立以嵌入式無線模塊開發(fā)為主。 如標題,有興趣給我發(fā)郵件,或留下 聯(lián)系方式… 查看全部問答∨ |
|
本公司現(xiàn)在招驅(qū)動開發(fā)方面書籍的作者 待遇豐厚 有興趣的可以和我聯(lián)系 進行詳談 QQ878298915 請注明 驅(qū)動 Email pyq_1985@163.com… 查看全部問答∨ |
|
avr studio 連接USB下載線老是 connect failed 裝了avrstudio 發(fā)現(xiàn)用USB連接不上開發(fā)板,看視頻教程里面,他實現(xiàn)裝了一個驅(qū)動,誰有這樣的驅(qū)動,在線等… 查看全部問答∨ |
|
自己(新手)編寫的ds1302 +數(shù)碼管顯示時間的程序,發(fā)現(xiàn)了一點點問題 問題 1.是寫入單片機仿真版的時候顯示000000,但是重新接入電腦的時候就可以顯示時間了, 2.在進入調(diào)分鐘的時候調(diào)節(jié)不了 要求;顯示時間,如果P3.1可以進入分調(diào)節(jié)(進入調(diào)節(jié)分所顯示的時間是0.5秒閃爍,并在沒按下p3.2進行增加1會在10s內(nèi)退出調(diào)節(jié) ...… 查看全部問答∨ |
首先提供幾個下載地址(雖然都是微軟提供的,但是不一定好找呀)^_^ 1、EVC4.0 http://download.microsoft.com/download/c/3/f/c3f8b58b-9753-4c2e-8b96-2dfe3476a2f7/eVC4.exe 2、evc4sp4.exe http://download.microsof ...… 查看全部問答∨ |
設(shè)計資源 培訓 開發(fā)板 精華推薦
- 阿里黑科技落地!夸克AI眼鏡全球首發(fā),高德、淘寶、支付寶都能用
- 化繁為簡, 適配復(fù)雜磁場環(huán)境,MT73xx 3D雙路輸出霍爾鎖存器賦能車規(guī)電機精準控制
- 9.5億美元收購恩智浦MEMS傳感器業(yè)務(wù),意法半導體 在傳感器領(lǐng)域的地位再升級
- 高性能電動滑板車 BLDC 電機驅(qū)動器:技術(shù)解析與應(yīng)用展望
- 5G工業(yè)網(wǎng)關(guān)的“邊緣計算+AI推理”一體化設(shè)計,PLC協(xié)議解析與缺陷檢測的實時聯(lián)動
- AR眼鏡的“工業(yè)指令投射”系統(tǒng),SLAM的空間定位、PLC數(shù)據(jù)實時疊加顯示
- 多光譜氣體傳感器的抗交叉干擾設(shè)計
- 多模態(tài)融合感知的“語義-幾何”聯(lián)合建模
- 工業(yè)觸摸屏的“壓感-手勢”多模態(tài)交互設(shè)計
- 工業(yè)機器人高精度力控的“雙模融合”傳感器設(shè)計
- 【社區(qū)大講堂】頂嵌與你一起:動手做嵌入式產(chǎn)品
- 快來!月月有獎第27期開始了~
- e絡(luò)盟e選第三期:熱門產(chǎn)品5折起,價格鎖定更安心
- 來聊聊你與MP3的情緣吧!——MP3播放板等你拿
- 端午節(jié)芯幣兌換禮品專場
- 【EEWORLD第二十七屆】2011年06月社區(qū)明星人物揭曉!
- 最熱8月,帶著你的原創(chuàng)一起High!
- 贏京東卡——我家房子“成精”了!與英飛凌一起來探索吧!
- 下載信息娛樂系統(tǒng)精品文章,贏【米家臺燈、小米保溫杯、米家藍牙溫濕計】,開啟MPS汽車技術(shù)進階之旅!
- 恩智浦無線MCU應(yīng)用征集+100套開發(fā)套件申請
- 半導體技術(shù)的不斷創(chuàng)新將是未來科技發(fā)展的動力源
- STM32開發(fā) -- Keil使用(1)
- 歐盟:已為美國加征汽車關(guān)稅準備了350億歐元報復(fù)清單
- 使用gcc工具鏈進行Linux環(huán)境下的stm32開發(fā)
- 世界機器人大會期間腦控機器人將挑戰(zhàn)世界紀錄
- 你的車變得更聰明了 日產(chǎn)展示"腦控車"技術(shù)
- DAC7611控制數(shù)/模轉(zhuǎn)換器程序
- 聯(lián)手小米:Oculus將在中國發(fā)布VR設(shè)備
- 51單片機與上位機串口通信程序設(shè)計
- 音樂生日快樂的播放程序