RCC :reset clock control 復位和時鐘控制器。主要講解時鐘部分,特別是要著重理解時鐘樹,理解了時鐘樹,STM32 的一切時鐘的來龍去脈都會了如指掌。
一、RCC主要作用——時鐘部分
設置系統時鐘SYSCLK、設置AHB分頻因子(決定HCLK是多少)、設置APB2分頻因子(設定PCLK2等于多少)、設置APB1分頻因子(決定PCLK1等于多少);控制AHB/APB2/APB1這3條總線開啟,控制每個外設時鐘的開啟。
對于SYSCLK、HCLK、PCLK2、PCLK1這4個時鐘的配置一般是:PCLK2=HCLK=SYSCLK=PLLCLK=72MHz,PCLK1=HCLK/2=36MHz.這個配置是庫函數的標準配置。
二、系統時鐘
系統時鐘包括了:
1.HSE高速外部時鐘(常用8MHz無源晶振);
2.PLL時鐘源(來源有HSE和HSI/2,一般選HSE作為時鐘來源);
3.PLL時鐘PLLCLK(通過設置PLL的倍頻因子,一般8Mx9=72MHz,72MHz是官方推薦穩定運行時鐘,最高128MHz);
4.系統時鐘SYSCLK(一般SYSCLK=PLLCLK=72MHz);
5.AHB總線時鐘HCLK(是系統時鐘SYSCLK經過AHB分頻器分頻后得到的時鐘,也就是APB總線時鐘,一般設置1分頻,HCLK=SYSSCLK=72MHz);
6.APB2總線時鐘HCLK2(APB2總線時鐘PCLK2由 HCLK經過高速APB2預分頻器得到,分頻因子可以是:[1,2,4,8,16],具體由時鐘配置寄存器CFGR的位13-11:PPRE2[2:0]決定,一般設置為 1 分頻,即 PCLK2 = HCLK =72M);
7.APB1總線時鐘HCLK1(APB1 總線時鐘 PCLK1 由 HCLK 經過低速 APB 預分頻器得到,HCLK1 屬于低速的總線時鐘,最高為 36M,這里只需粗線條的設置好 APB1 的時鐘即可。我們這里設置為 2分頻,即 PCLK1 = HCLK/2 = 36M)設置系統時鐘函數在庫函數system_stm32f10x.c
代碼清單:設置系統時鐘庫函數
1
1 static void SetSysClockTo72(void)
2 {
3 __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
4
5 // ① 使能 HSE,并等待 HSE 穩定
6 RCC->CR |= ((uint32_t)RCC_CR_HSEON);
7
8 // 等待 HSE 啟動穩定,并做超時處理
9 do {
10 HSEStatus = RCC->CR & RCC_CR_HSERDY;
11 StartUpCounter++;
12 } while ((HSEStatus == 0) &&(StartUpCounter !=HSE_STARTUP_TIMEOUT));
13
14 if ((RCC->CR & RCC_CR_HSERDY) != RESET) {
15 HSEStatus = (uint32_t)0x01;
16 } else {
17 HSEStatus = (uint32_t)0x00;
18 }
19 // HSE 啟動成功,則繼續往下處理
20 if (HSEStatus == (uint32_t)0x01) {
21
22 //-----------------------------------------------------------
23 // 使能 FLASH 預存取緩沖區 */
24 FLASH->ACR |= FLASH_ACR_PRFTBE;
25
26 // SYSCLK 周期與閃存訪問時間的比例設置,這里統一設置成 2
27 // 設置成 2 的時候,SYSCLK 低于 48M 也可以工作,如果設置成 0 或者 1 的時候,
28 // 如果配置的 SYSCLK 超出了范圍的話,則會進入硬件錯誤,程序就死了
29 // 0:0 < SYSCLK <= 24M
30 // 1:24< SYSCLK <= 48M
31 // 2:48< SYSCLK <= 72M */
32 FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
33 FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
34 //------------------------------------------------------------
35
36 // ② 設置 AHB、APB2、APB1 預分頻因子
37 // HCLK = SYSCLK
38 RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
39 //PCLK2 = HCLK
40 RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
41 //PCLK1 = HCLK/2
42 RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
43
44 //③ 設置 PLL 時鐘來源,設置 PLL 倍頻因子,PLLCLK = HSE * 9 = 72 MHz
45 RCC->CFGR &= (uint32_t)((uint32_t)
46 ~(RCC_CFGR_PLLSRC
47 | RCC_CFGR_PLLXTPRE
48 | RCC_CFGR_PLLMULL));
49 RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE
50 | RCC_CFGR_PLLMULL9);
51
52 // ④ 使能 PLL
53 RCC->CR |= RCC_CR_PLLON;
54
55 // ⑤ 等待 PLL 穩定
56 while ((RCC->CR & RCC_CR_PLLRDY) == 0) {
57 }
58
59 // ⑥ 選擇 PLL 作為系統時鐘來源
60 RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
61 RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
62
63 // ⑦ 讀取時鐘切換狀態位,確保 PLLCLK 被選為系統時鐘
64 while ((RCC->CFGR&(uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08){
65 }
66 } else {// 如果 HSE 啟動失敗,用戶可以在這里添加錯誤代碼出來
67 }
68 }
三、其他時鐘
1. USB時鐘
USB 時鐘是由 PLLCLK 經過 USB 預分頻器得到,分頻因子可以是:[1,1.5],具體的由時鐘配置寄存器 CFGR的位 22:USBPRE配置。USB的時鐘最高是 48M,根據分頻因子反推過來算 ,PLLCLK 只 能 是 48M 或 者 是 72M。 一 般我 們 設 置 PLLCLK=72M ,USBCLK=48M。USB 對時鐘要求比較高,所以 PLLCLK 只能是由 HSE 倍頻得到,不能使用 HSI倍頻。
2. Cortex系統時鐘
Cortex 系統時鐘由 HCLK 8 分頻得到,等于 9M,Cortex 系統時鐘用來驅動內核的系統定時器 SysTick,SysTick 一般用于操作系統的時鐘節拍,也可以用做普通的定時。
3. ADC時鐘
ADC時鐘由PCLK2經過ADC預分頻器得到,分頻因子可以是[2,4,6,8],具體的由時鐘配置寄存器 CFGR的位 15-14:ADCPRE[1:0]決定。很奇怪的是怎么沒有 1分頻。ADC時鐘最高只能是 14M,如果采樣周期設置成最短的 1.5 個周期的話,ADC 的轉換時間可以達到最短的 1us。如果真要達到最短的轉換時間 1us 的話,那 ADC 的時鐘就得是 14M,反推PCLK2 的時鐘只能是:28M、56M、84M、112M,鑒于 PCLK2 最高是 72M,所以只能取28M和 56M。
4. RTC時鐘、獨立看門狗時鐘
RTC 時鐘可由 HSE/128 分頻得到,也可由低速外部時鐘信號 LSE 提供,頻率為32.768KHZ,也可由低速內部時鐘信號 HSI 提供,具體選用哪個時鐘由備份域控制寄存器BDCR的位9-8:RTCSEL[1:0]配置。獨立看門狗的時鐘由LSI提供,且只能是由LSI提供,LSI是低速的內部時鐘信號,頻率為 30~60KHZ直接不等,一般取 40KHZ。
5. MCO時鐘輸出
MCO 是 microcontroller clock output 的縮寫,是微控制器時鐘輸出引腳,在 STM32 F1系列中 由 PA8 復用所得,主要作用是可以對外提供時鐘,相當于一個有源晶振。MCO 的時鐘來源可以是:PLLCLK/2、HSI、HSE、SYSCLK,具體選哪個由時鐘配置寄存器CFGR的位 26-24:MCO[2:0]決定。除了對外提供時鐘這個作用之外,我們還可以通過示波器監控 MCO引腳的時鐘輸出來驗證我們的系統時鐘配置是否正確。
四、如何配置系統時鐘
1、使用HSE
將HSE經過PLL倍頻之后作為系統時鐘,通常的配置是:HSE=8MHz,PLL的倍頻因子為9,系統時鐘SYSCLK=72MHz。在程序來到main函數之前,啟動文件statup_stm32f10x_hd.s已經調用SystemInit()函數,把系統時鐘初始化為72MHz,SystemInit()函數在庫文件system_stm32f10x.c中定義。
2.使用HSI
如果PLL的時鐘來源是HSE,那么當HSE故障時,不僅HSE不能使用,連PLL也會關閉,此時系統會自動切換HSI為系統時鐘,此時SYSCLK=HSI=8MHz,如果沒有開啟CSS和CSS中斷的話,整個系統只能在低速率運行,跟系統癱瘓沒什么兩樣。如果開啟了CSS,當HSE故障,可以在CSS中斷中采取補救措施,使用HSI,并把系統時鐘設置為更高的頻率,最高是64MHz,一般足夠使用如ADC/SPI等,但是思考原來SYSCLK=72MHz,現在外設時鐘肯定都變了,外設工作會被打亂。我們是不是在設置 HSI 時鐘的時候,也重新調整外設總線的分頻因子,即 AHB,APB2 和 APB1 的分頻因子,使外設的時鐘達到跟 HSE 沒有故障之前一樣。但是這個也不是最保障的辦法,畢竟不能一直使用 HSI,所以當 HSE 故障時還是要采取報警措施。
還有一種情況是,有些用戶不想用 HSE,想用 HSI,但是又不知道怎么用 HSI 來設置系統時鐘,因為調用庫函數都是使用 HSE,下面我們給出個使用 HSI 配置系統時鐘例子。
代碼清單:HSE作為系統時鐘來源
1
1 void HSE_SetSysClock(uint32_t pllmul)
2 {
3 __IO uint32_t StartUpCounter = 0, HSEStartUpStatus = 0;
4
5 // 把 RCC 外設初始化成復位狀態,這句是必須的
6 RCC_DeInit();
7
8 //使能 HSE,開啟外部晶振, STM32F103 系列開發板用的是 8M
9 RCC_HSEConfig(RCC_HSE_ON);
10
11 // 等待 HSE 啟動穩定
12 HSEStartUpStatus = RCC_WaitForHSEStartUp();
13
14 // 只有 HSE 穩定之后則繼續往下執行
15 if (HSEStartUpStatus == SUCCESS) {
16 //-----------------------------------------------------------------//
17
18 // 使能 FLASH 預存取緩沖區
19 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
20
21 // SYSCLK 周期與閃存訪問時間的比例設置,這里統一設置成 2
22 // 設置成 2 的時候,SYSCLK 低于 48M 也可以工作,如果設置成 0 或者 1 的時候,
23 // 如果配置的 SYSCLK 超出了范圍的話,則會進入硬件錯誤,程序就死了
24 // 0:0 < SYSCLK <= 24M
25 // 1:24< SYSCLK <= 48M
26 // 2:48< SYSCLK <= 72M
27 FLASH_SetLatency(FLASH_Latency_2);
28 //-----------------------------------------------------------------//
29
30 // AHB 預分頻因子設置為 1 分頻,HCLK = SYSCLK
31 RCC_HCLKConfig(RCC_SYSCLK_Div1);
32
33 // APB2 預分頻因子設置為 1 分頻,PCLK2 = HCLK
34 RCC_PCLK2Config(RCC_HCLK_Div1);
35
36 // APB1 預分頻因子設置為 1 分頻,PCLK1 = HCLK/2
37 RCC_PCLK1Config(RCC_HCLK_Div2);
38
39 //-----------------設置各種頻率主要就是在這里設置-------------------//
40 // 設置 PLL 時鐘來源為 HSE,設置 PLL 倍頻因子
41 // PLLCLK = 8MHz * pllmul
42 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, pllmul);
43 //-------------------------------------------------------------//
44
45 // 開啟 PLL
46 RCC_PLLCmd(ENABLE);
47
48 // 等待 PLL 穩定
49 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {
50 }
51
52 // 當 PLL 穩定之后,把 PLL 時鐘切換為系統時鐘 SYSCLK
53 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
54
55 // 讀取時鐘切換狀態位,確保 PLLCLK 被選為系統時鐘
56 while (RCC_GetSYSCLKSource() != 0x08) {
57 }
58 } else {
59 // 如果 HSE 開啟失敗,那么程序就會來到這里,用戶可在這里添加出錯的代碼處理
60 // 當 HSE 開啟失敗或者故障的時候,單片機會自動把 HSI 設置為系統時鐘,
61 // HSI 是內部的高速時鐘,8MHZ
62 while (1) {
63 }
64 }
65 }
這個函數采用庫函數編寫,有個形參pllmul,用來設置PLL的倍頻因子,調用的時候形參可以是:RCC_PLLMul_x , x:[2,3,…16],這些宏來源于庫函數的定義,宏展開是一些 32 位的十六進制數,具體功能是配置了時鐘配置寄存器 CFGR 的位 21-18PLLMUL[3:0],預先定義好倍頻因子,方便調用。
函數調用舉例:HSE_SetSysClock(RCC_PLLMul_9); 則設置系統時鐘為:8MHZ * 9 =72MHZ。 HSE_SetSysClock(RCC_PLLMul_16); 則設置系統時鐘為:8MHZ * 16 = 128MHZ超頻慎用。
代碼清單:HSI作為系統時鐘來源
1
1 void HSI_SetSysClock(uint32_t pllmul)
2 {
3 __IO uint32_t HSIStartUpStatus = 0;
4
5 // 把 RCC 外設初始化成復位狀態,這句是必須的
6 RCC_DeInit();
7
8 //使能 HSI
9 RCC_HSICmd(ENABLE);
10
11 // 等待 HSI 就緒
12 HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY;
13
14 // 只有 HSI 就緒之后則繼續往下執行
15 if (HSIStartUpStatus == RCC_CR_HSIRDY) {
16 //-------------------------------------------------------------//
17
18 // 使能 FLASH 預存取緩沖區
19 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
20
21 // SYSCLK 周期與閃存訪問時間的比例設置,這里統一設置成 2
22 // 設置成 2 的時候,SYSCLK 低于 48M 也可以工作,如果設置成 0 或者 1 的時候,
23 // 如果配置的 SYSCLK 超出了范圍的話,則會進入硬件錯誤,程序就死了
24 // 0:0 < SYSCLK <= 24M
25 // 1:24< SYSCLK <= 48M
26 // 2:48< SYSCLK <= 72M
27 FLASH_SetLatency(FLASH_Latency_2);
28 //------------------------------------------------------------//
29
30 // AHB 預分頻因子設置為 1 分頻,HCLK = SYSCLK
31 RCC_HCLKConfig(RCC_SYSCLK_Div1);
32
33 // APB2 預分頻因子設置為 1 分頻,PCLK2 = HCLK
34 RCC_PCLK2Config(RCC_HCLK_Div1);
35
36 // APB1 預分頻因子設置為 1 分頻,PCLK1 = HCLK/2
37 RCC_PCLK1Config(RCC_HCLK_Div2);
38
39 //-----------設置各種頻率主要就是在這里設置-------------------//
40 // 設置 PLL 時鐘來源為 HSE,設置 PLL 倍頻因子
41 // PLLCLK = 4MHz * pllmul
42 RCC_PLLConfig(RCC_PLLSource_HSI_Div2, pllmul);
43 //-- -----------------------------------------------------//
44
45 // 開啟 PLL
46 RCC_PLLCmd(ENABLE);
47
48 // 等待 PLL 穩定
49 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {
50 }
51
52 // 當 PLL 穩定之后,把 PLL 時鐘切換為系統時鐘 SYSCLK
53 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
54
55 // 讀取時鐘切換狀態位,確保 PLLCLK 被選為系統時鐘
56 while (RCC_GetSYSCLKSource() != 0x08) {
57 }
58 } else {
59 // 如果 HSI 開啟失敗,那么程序就會來到這里,用戶可在這里添加出錯的代碼處理
60 // 當 HSE 開啟失敗或者故障的時候,單片機會自動把 HSI 設置為系統時鐘,
61 // HSI 是內部的高速時鐘,8MHZ
62 while (1) {
63 }
64 }
65 }
HSI 設置系統時鐘函數跟 HSE 設置系統時鐘函數在原理上是一樣的,有一個區別的地方就是,HSI 必須 2 分頻之后才能作為 PLL 的時鐘來源,所以使用 HSI 時,最大的系統時鐘 SYSCLK只能是 HSI/2*16=4*16=64MHZ。
函數調用舉例:HSI_SetSysClock(RCC_PLLMul_9); 則設置系統時鐘為:4MHZ * 9 =36MHZ。
3、MCO輸出
在STM32F103中,PA8可以復用為MCO的引腳,對外提供時鐘輸出,也可以用示波器監控該引腳輸出判斷系統時鐘是否設置正確。
代碼清單:MCO初始化
1
1 /*
2 * 初始化 MCO 引腳 PA8
3 * 在 F103 系列中 MCO 引腳只有一個,即 PA8,在 F4 系列中,MCO 引腳有兩個
4 */
5 void MCO_GPIO_Config(void)
6 {
7 GPIO_InitTypeDef GPIO_InitStructure;
8 // 開啟 GPIOA 的時鐘
9 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
10
11 // 選擇 GPIO8 引腳
12 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
13
14 //設置為復用功能推挽輸出
15 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
16
17 //設置 IO 的翻轉速率為 50M
18 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
19
20 // 初始化 GPIOA8
21 GPIO_Init(GPIOA, &GPIO_InitStructure);
22 }
代碼清單:MCO輸出時鐘選擇
1
1 // 設置 MCO 引腳輸出時鐘,用示波器即可在 PA8 測量到輸出的時鐘信號,
2 // 我們可以把 PLLCLK/2 作為 MCO 引腳的時鐘來檢測系統時鐘是否配置準確
3 // MCO 引腳輸出可以是 HSE,HSI,PLLCLK/2,SYSCLK
4 //RCC_MCOConfig(RCC_MCO_HSE);
5 //RCC_MCOConfig(RCC_MCO_HSI);
6 //RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);
7 RCC_MCOConfig(RCC_MCO_SYSCLK);
初始化MCO引腳后,可以直接調用庫函數RCC_MCOConfig()來選擇MCO時鐘來源。
代碼清單:main
1
1 int main(void)
2 {
3 // 程序來到 main 函數之前,啟動文件:statup_stm32f10x_hd.s 已經調用
4 // SystemInit()函數把系統時鐘初始化成 72MHZ
5 // SystemInit()在 system_stm32f10x.c 中定義
6 // 如果用戶想修改系統時鐘,可自行編寫程序修改
7
8 // 重新設置系統時鐘,這時候可以選擇使用 HSE 還是 HSI
9
10 // 使用 HSE 時,SYSCLK = 8M * RCC_PLLMul_x, x:[2,3,...16],最高是 128M
11 HSE_SetSysClock(RCC_PLLMul_9);
12
13 // 使用 HSI 時,SYSCLK = 4M * RCC_PLLMul_x, x:[2,3,...16],最高是 64MH
14 //HSI_SetSysClock(RCC_PLLMul_16);
15
16 // MCO 引腳初始化
17 MCO_GPIO_Config();
18
19 // 設置 MCO 引腳輸出時鐘,用示波器即可在 PA8 測量到輸出的時鐘信號,
20 // 我們可以把 PLLCLK/2 作為 MCO 引腳的時鐘來檢測系統時鐘是否配置準確
21 // MCO 引腳輸出可以是 HSE,HSI,PLLCLK/2,SYSCLK
22 //RCC_MCOConfig(RCC_MCO_HSE);
23 //RCC_MCOConfig(RCC_MCO_HSI);
24 //RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);
25 RCC_MCOConfig(RCC_MCO_SYSCLK);
26
27 // LED 端口初始化
28 LED_GPIO_Config();
29 while (1) {
30 LED1( ON ); // 亮
31 Delay(0x0FFFFF);
32 LED1( OFF ); // 滅
33 Delay(0x0FFFFF);
34 }
35 }
在main中,可以調用HSE_SetSysClock()或者HSI_SetSysClock()這兩個函數把系統時鐘設置成為各種常用的時鐘,然后通過MCO引腳監控 ,或者通過LED閃爍的快慢體驗不同的系統時鐘對同一軟件延時函數的影響。
上一篇:stm32時鐘配置 STM32CubeMX配置時鐘
下一篇:STM32寄存器列表 RCC時鐘相關寄存器
推薦閱讀
史海拾趣
隨著技術的不斷進步,DAICO公司成功研發出一系列高可靠性的定制產品。這些產品以其卓越的性能和穩定性,贏得了客戶的廣泛認可。DAICO開始將業務擴展到商用飛機和其他高端商業行業,為衛星、雷達、導航、通信、電子戰和導彈系統提供復雜操作不可或缺的一部分。
在1966年,Electro-Mech Components, Inc. (EMC)做出了一個重要的戰略決策——在墨西哥北下加利福尼亞州的蒂華納開設一家制造工廠。這個決定標志著EMC正式進軍國際市場,并開始了其在全球范圍內的業務布局。蒂華納工廠的建立為EMC帶來了更低的制造成本和更廣闊的市場前景。隨著工廠規模的逐漸擴大,EMC的產品線也日益豐富,從最初的發光按鈕開關逐漸擴展到指示燈和多開關互鎖組件等多個領域。
在公司發展初期,Compound Photonics曾專注于一款微投顯示模組的研發。然而,這個項目并未如預期般順利,最終宣告失敗。面對挫折,公司并沒有放棄,而是迅速調整戰略,轉向LCoS方向。這一決策不僅讓公司避免了進一步的損失,還為其在LCoS領域的發展打開了新的大門。
背景:隨著全球對環境保護和可持續發展的重視程度不斷提高,HCH Co公司積極響應號召,開始了綠色轉型之路。公司致力于開發環保型電子產品和綠色生產技術,以減少對環境的影響。
發展:通過不斷的技術創新和生產工藝的改進,HCH Co公司成功推出了一系列環保型電子產品,如可回收材料制成的外殼、低功耗的顯示屏等。同時,公司還加強了廢棄電子產品的回收和再利用工作,實現了資源的循環利用。綠色轉型不僅提升了公司的社會形象,也為公司的長期發展注入了新的動力。
Heatron LED Integration始終將客戶需求放在首位,提供全方位的服務支持。公司建立了完善的售前咨詢、售中指導和售后服務體系,確保客戶在使用過程中能夠得到及時、專業的幫助。此外,公司還根據客戶需求提供定制化解決方案,滿足不同場景下的照明需求。這種客戶至上的服務理念,贏得了廣大客戶的信賴和好評。
哪位在PB5中定制過中文輸入法, 我是這樣做的: 加入MSPY3.0 for Windows CE DataBase (1.7M) 加入Double Spelling SoftKey-small 軟輸入面板是可通過 SipShowIM調出使用,修改文件名可以, 但軟輸入面板顯示的同時,也顯示了一個小中文面板,在程 ...… 查看全部問答∨ |
|
我買了一個串口SIM300GPRS模塊,想用在WinCE上撥號上網。 當在PC上時,把模塊連到COM1上,發送"AT/r",收到:at OK 但是在安裝了WinCE的開發板上,把模塊連到com1上,設置同樣的串口參數,發送"AT/r",卻收不到任何數據。在程序中使用Rea ...… 查看全部問答∨ |
|
各位高手好,我最近在玩AVR,做TCP/IP,想給ATmega32裝一個NUT/OS操作系統,買了本AVR單片機TCP/IP的書,那書只說到編譯OS的庫函數,是用WINAVR把OS的源代碼重新編譯一下,生成HEX文件然后通過JATG燒 ...… 查看全部問答∨ |
|
老師留了嵌入式作業 以下選一個 實驗十四 LCD驅動實驗 實驗十五 觸摸屏驅動實驗 實驗十六 IDE_CF卡模塊讀寫實驗 實驗十七 MMC驅動實驗 &nb ...… 查看全部問答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 03:30 編輯 分享AD9854資料,全力備戰2013電設大賽 里面有好資料,一起進步!共勉:) [ 本帖最后由 在路上的旁觀者 于 2013-8-30 19:14 編輯 ] … 查看全部問答∨ |
大家好,初次來到這里,想請教大家一個問題,我安裝的是CCS4.2版本軟件,但是設置仿真器以及芯片型號時里面沒有28069這個型號,請問是需要安裝什么補丁么?還請高手指點,感激不盡,謝謝!… 查看全部問答∨ |