68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> 新唐M0 M4系統(tǒng)初始化
新聞資訊
NEWS INFORMATION

新唐M0 M4系統(tǒng)初始化

關(guān)鍵字:新唐單片機(jī) 開發(fā)環(huán)境 發(fā)布時間:2019-05-22

系統(tǒng)初始化包含了時鐘(clock)初始化和多功能引腳(Multi Function Pin 簡稱MFP寄存器)配置。void SYS_Init(void) {

/* 解鎖保護(hù)寄存器 */ 
SYS_UnlockReg();

/*芯片中很多寄存器是寫保護(hù)的,例如PWRCTL寄存器,要寫這些寄存器需要先解鎖*/ 

/* 使能外部高速晶振,一般范圍是 (4~24 MHz) */ 
CLK->PWRCTL |= (0x1 << CLK_PWRCTL_HXT_EN_Pos); // HXT Enabled

/* 等待外部時鐘穩(wěn)定,一般是12M */

 CLK_WaitClockReady( CLK_CLKSTATUS_HXT_STB_Msk); 

/* HCLK就是CPU 的時鐘,切為外部晶振HXT */ 
CLK->CLKSEL0 = (CLK->CLKSEL0 &~CLK_CLKSEL0_HCLK_S_Msk) | CLK_CLKSEL0_HCLK_S_HXT; 

/* 使能UART0和UART1兩個IP的時鐘 */ 
CLK->APBCLK |= CLK_APBCLK_UART0_EN; 

// UART0 Clock Enable 
CLK->APBCLK |= CLK_APBCLK_UART1_EN; 


// UART1 Clock Enable 
/* 選擇UART時鐘源 */ 
CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_S_Msk) | CLK_CLKSEL1_UART_S_HXT;// 選擇外部 12 MHz or 32 KHz 做時鐘源 
/* Update System Core Clock */ 

/* 可以通過 SystemCoreClockUpdate() 來自動計算 PllClock, SystemCoreClock 和 CycylesPerUs */ 

SystemCoreClockUpdate();
 /* 初始化 I/O 多功能引腳 */ 
/* PB13用作UART0 接收,PB14用作UART0發(fā)送 */ 
SYS->PB_H_MFP &= ~(SYS_PB_H_MFP_PB13_MFP_Msk | SYS_PB_H_MFP_PB14_MFP_Msk); 

SYS->PB_H_MFP |= (SYS_PB_H_MFP_PB13_MFP_UART0_RX | SYS_PB_H_MFP_PB14_MFP_UART0_TX); 

/* PB4用作UART1 RTS,PB5用作UART1接收,PB6用作UART1 發(fā)送,PB7用作UART1 CTS */
 
SYS->PB_L_MFP &= ~(SYS_PB_L_MFP_PB4_MFP_Msk | SYS_PB_L_MFP_PB5_MFP_Msk | SYS_PB_L_MFP_PB6_MFP_Msk | SYS_PB_L_MFP_PB7_MFP_Msk); 

SYS->PB_L_MFP |= (SYS_PB_L_MFP_PB4_MFP_UART1_RTS | SYS_PB_L_MFP_PB5_MFP_UART1_RX | SYS_PB_L_MFP_PB6_MFP_UART1_TX | SYS_PB_L_MFP_PB7_MFP_UART1_CTS); 

/* 重新加鎖 */ 
SYS_LockReg(); 

}

新唐的M0/M4一般都有時鐘輸出功能,用于調(diào)試內(nèi)部時鐘頻率,或者產(chǎn)生時鐘給其它芯片使用。這個功能引腳一般叫CKO,設(shè)定寄存器是FRQDIV

Void CKO_Init() {
 /*使能FRQDIV 時鐘*/ 
CLK->APBCLK |= CLK_APBCLK_FDIV_EN_Msk;
 /*選擇FRQDIV 時鐘源為HCLK,從CKO輸出的時鐘頻率將與HCLK有關(guān)*/ 
CLK->CLKSEL2 = (CLK->CLKSEL2&~(CLK_CLKSEL2_FRQDIV_S_Msk))|(CLK_CLKSEL2_FRQDIV_S_HCLK);//CKO using HCLK 

/*將P3.6配置為CKO功能*/
 SYS->P3_MFP &= ~( SYS_MFP_P36_Msk); SYS->P3_MFP |= (SYS_MFP_P36_CKO);
//HCLK 從P3.6輸出 /* CKO 輸出的頻率為 HCLK/1 */ 
CLK->FRQDIV = CLK_FRQDIV_DIVIDER1_Msk | 

CLK_FRQDIV_DIVIDER_EN_Msk; }

 

有的芯片輸出的頻率至少要/2,那么輸出的頻率就是HCLK/2了,這個要注意看CLK IP的FRQDIV寄存器的描述。

 

新唐有些芯片可以用外部32K trim內(nèi)部HIRC。一般HIRC全溫度范圍誤差2%左右,在有些場合這個精度不夠,這時候就可以用外部32K來trim內(nèi)部HIRC,trim之后HIRC精度可以達(dá)到0.25%左右。Trim功能一旦使能就一直在工作,不會停止。如果外部32K晶振出錯,trim就會停止,并發(fā)生中斷。所以需要在中斷里面重新啟動trim功能。

/*LXT 時鐘出錯或者嘗試次數(shù)達(dá)到限制將發(fā)生中斷*/ 
void HIRC_IRQHandler(void) {
uint32_t u32IRCStatus; 
/*清除中斷標(biāo)志*/ 
u32IRCStatus = SYS->IRCTRIMINT;
 SYS->IRCTRIMINT = u32IRCStatus; 
/*重新啟動trim功能*/ 
SYS->IRCTRIMCTL = SYS_IRCTRIMCTL_LOOP_32CLK| SYS_IRCTRIMCTL_TRIM_12M;
 } 
/*使能trim功能*/ 
void SYS_EnableAutoTrim() {
 /*取32個32K時鐘周期的平均值來trim HIRC*/
SYS->IRCTRIMCTL = SYS_IRCTRIMCTL_LOOP_32CLK| SYS_IRCTRIMCTL_TRIM_12M;
 /*一旦出錯將發(fā)生中斷*/ 
SYS->IRCTRIMIEN = SYS_IRCTRIMIEN_32KERR_EN | SYS_IRCTRIMIEN_FAIL_EN; NVIC_EnableIRQ(HIRC_IRQn); 
}

只要調(diào)用SYS_EnableAutoTrim就可以使能Auto trim功能來trim HIRC了。

新唐的芯片一般有3種復(fù)位方式:CPU reset、Chip reset和System reset
CPU reset:就是將CPU執(zhí)行指針PC直接指到0的地方重新執(zhí)行程序
Chip reset:就是整個芯片復(fù)位,類似于POR上電復(fù)位的方式,讓程序重新執(zhí)行
System reset:類似于Chip reset,除了不復(fù)位晶振電路和Config Area的值不會重新加載,其它的電路都會被復(fù)位
我們常用System reset切到APROM運(yùn)行,或者切到LDROM運(yùn)行。系統(tǒng)上電從APROM運(yùn)行還是從LDROM運(yùn)行由Config area決定,但是有時侯軟件希望切到某個區(qū)域運(yùn)行,這時候用System reset比較好。其實用CPU reset也可以,但是System reset的好處是它會將所有的IP都復(fù)位,防止它們在新的程序里面亂動作。

 

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

万年县| 宜兴市| 奉新县| 建水县| 安多县| 凤城市| 永济市| 青河县| 泗水县| 贵州省| 兰州市| 封丘县| 涡阳县| 筠连县| 桦甸市| 新野县| 黄梅县| 胶州市| 合江县| 大悟县| 庆安县| 宁德市| 旬邑县| 桐城市| 凤庆县| 崇信县| 崇礼县| 长宁区| 水城县| 水城县| 图木舒克市| 东至县| 香港 | 乐平市| 鄂伦春自治旗| 东安县| 蕲春县| 霍州市| 普安县| 兰坪| 沙洋县|