久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
飛思卡爾單片機初始化程序
[打印本頁]
作者:
shuobugaosu
時間:
2021-1-4 09:36
標題:
飛思卡爾單片機初始化程序
飛思卡爾單片機AD采集初始化函數,各頻率PWM輸出設置,延時函數。
void SecondDelay(unsigned int x) //define delay time program about xs
{
unsigned char i,j,k,m;
while(x--)
{
for(i=0;i<10;i++)
for(j=0;j<12;j++)
for(k=0;k<100;k++)
for(m=0;m<100;m++)
{;}
}
}
void mSecondDelay(unsigned int x) //define delay time program about xs
{
unsigned char i,j,k,m;
while(x--)
{
for(i=0;i<10;i++)
for(j=0;j<12;j++)
for(k=0;k<10;k++)
for(m=0;m<1;m++)
{;}
}
}
void ATD0Initial(void)
{
ATD0CTL0=0x00; /*多通道轉換時,確定ANO轉換完成后的下一個要轉換的通道號*/
/*ATD Control Register 0
* 0b00000000
* ||||||||__ WRAP0
* |||||||___ WRAP1
* ||||||____ WRAP2
* |||||_____ 保留
*/
ATD0CTL1=0x87; /*設不使用外部觸發*/
/* ATD Control Register 1
*
* 0b10000111
* ||||||||__ ETRIGCH2
* |||||||___ ETRIGCH2
* ||||||____ ETRIGCH2
* |||||_____|
* ||||______|
* |||_______|保留
* ||________|
* |_________ ETRIGSEL(0-開放;1-禁止)
*/
ATD0CTL2=0x80; /*設8通道ATD0模塊為正常工作模式,使能A/D,正常清除標志,不使用外部觸發,禁止中斷*/
/* ATD Control Register 2
*
* 0b10000000
* ||||||||__ ATD Sequence Complete Interrupt Flag
* |||||||___ ATD Sequence Complete Interrupt Enable
* ||||||____ External Trigger Mode Enable
* |||||_____ External Trigger Polarity
* ||||______ External Trigger Level/Edge Control
* |||_______ ATD Power Down inWait Mode
* ||________ ATD Fast Flag Clear All(0 ATD flag clearing operates normally)
* |_________ ATD Power Up(0 Power down ATD;1 Normal ATD functionality)
*/
ATD0CTL3=0x08; /*隊列長度為1,即只轉換1個通道*/
/* ATD Control Register 3
*
* 0b00001000
* ||||||||__ FRZ0
* |||||||___ FRZ1
* ||||||____ FIFO
* |||||_____ S1C
* ||||______ S2C
* |||_______ S4C
* ||________ S8C
* |_________ 保留
*/
ATD0CTL4=0x21; /*10位精度,A/D轉換的第二階段為4個A/D轉換周期,4分頻*/
/* ATD Control Register 4
*
* 0b00100000
* ||||||||__ PRS0
* |||||||___ PRS1
* ||||||____ PRS2
* |||||_____ PRS3
* ||||______ PRS4
* |||_______ SMP0
* ||________ SMP1
* |_________ SRES8(0-10位精度;1-8位精度)
*/
ATD0CTL5=0x80; /*右對齊,無符號,單通道轉換模式,選擇模擬通道0*/
/* ATD Control Register 5
*
* 0b10000000
* ||||||||__ CA采樣通道0
* |||||||___ CB
* ||||||____ CC
* |||||_____ 保留
* ||||______ MULT(0-單通道采樣;1-多通道采樣)
* |||_______ SCAN(0-單次轉換隊列;1-連續轉換隊列)
* ||________ DSGN(0-無符號;1-有符號)
* |_________ DJM(0-左對齊;1-右對齊)
*/
ATD0DIEN=0x00; /*數字輸入允許寄存器,禁止數字輸入*/
}
void ATD1Initial(void)
{
/*AD轉換器2的設置*/
ATD1CTL0=0x00; /*多通道轉換時,確定ANO轉換完成后的下一個要轉換的通道號*/
/*ATD Control Register 0
* 0b00000000
* ||||||||__ WRAP0
* |||||||___ WRAP1
* ||||||____ WRAP2
* |||||_____ WRAP3
* ||||______ 保留
*/
ATD1CTL1=0x87; /*外部觸發源設置寄存器,在此設不使用外部觸發*/
/* ATD Control Register 1
*
* 0b10000111
* ||||||||__ ETRIGCH2
* |||||||___ ETRIGCH2
* ||||||____ ETRIGCH2
* |||||_____|
* ||||______|
* |||_______|保留
* ||________|
* |_________ ETRIGSEL(0-開放外部觸發;1-禁止)
*/
ATD1CTL2=0x80; /*設16通道ATD1模塊為使能A/D,正常清除標志,不使用外部觸發*/
/* ATD Control Register 2
*
* 0b10000000
* ||||||||__ ATD Sequence Complete Interrupt Flag(1-有序列轉換完成中斷發生,0-無)
* |||||||___ ATD Sequence Complete Interrupt Enable(1-使能序列轉換完成中斷)
* ||||||____ External Trigger Mode Enable(0-禁止外部觸發;1-使能外部觸發)
* |||||_____ External Trigger Polarity
* ||||______ ETRIGLE(External Trigger Level/Edge Control)外部觸發邊沿控制
* |||_______ AWAI(ATD Power Down inWait Mode)0-在等待模式正常運行,1-省電模式
* ||________ AFFC(ATD Fast Flag Clear All)(0 ATD flag clearing operates normally)
* |_________ ADPU(ATD Power Up)(0 Power down ATD;1 Normal ATD functionality)
*/
ATD1CTL3=0x08; /*探制轉換序列的長度,此處設隊列長度為1,即只轉換一個通道,最大長度為16*/
/* ATD Control Register 3
*
* 0b00001000
* ||||||||__ FRZ0
* |||||||___ FRZ1
* ||||||____ FIFO
* |||||_____ S1C|1
* ||||______ S2C|0
* |||_______ S4C|0
* ||________ S8C|0長度為1
* |_________ 保留
*/
ATD1CTL4=0x21; /*設置轉換精度,采樣 時間,ATD時鐘分頻,在此設10位精度,A/D轉換的第二階段為4個A/D轉換周期,4分頻*/
/* ATD Control Register 4
*
* 0b00100000
* ||||||||__ PRS0
* |||||||___ PRS1
* ||||||____ PRS2
* |||||_____ PRS3
* ||||______ PRS4 00000即2分頻
* |||_______ SMP0=1
* ||________ SMP1=0 4個ATD時鐘周期
* |_________ SRES8(0-10位精度;1-8位精度)
*/
ATD1CTL5=0x80; /*設置數據格式,掃瞄方式,采樣方式,采樣通道,在此設右對齊,無符號,單次轉換隊列模式,單通道采樣,選擇模擬通道0*/
/* ATD Control Register 5
*
* 0b10000000
* ||||||||__ CA=0
* |||||||___ CB=0
* ||||||____ CC=0
* |||||_____ CD=0 采樣通道0
* ||||______ MULT(0-單通道采樣;1-多通道采樣)
* |||_______ SCAN(0-單次轉換隊列;1-連續轉換隊列)
* ||________ DSGN(0-無符號;1-有符號)
* |_________ DJM(0-左對齊;1-右對齊)
*/
ATD1DIEN0=0x00; /*數字輸入允許寄存器,禁止數字輸入*/
ATD1DIEN1=0x00; /*數字輸入允許寄存器,禁止數字輸入*/
}
unsigned int ATD0Sample(unsigned char ADChannel)
{
ATD0CTL5=0x80;
ATD0CTL5+=ADChannel; /*ADChannel可設為0-7,則可選擇0-7中的任一通道*/
while(ATD0STAT0_SCF==0){}; /*等待當前隊列轉換完成,當轉換正在進行SCF=0,則為真,一直空循環*/
ATD0STAT0_SCF=1; /*當置SCF為1時,將使該標志位清零*/
return ATD0DR0;
}
unsigned int ATD1Sample(unsigned char ADChannel)
{
ATD1CTL5=0x80;
ATD1CTL5+=ADChannel;
while(ATD1STAT0_SCF==0){}; /*等待當前隊列轉換完成,!邏輯非,當轉換正在進行SCF=0,則為真,一直循環*/
ATD1STAT0_SCF=1; /*當置SCF為1時,將使該標志位清零*/
return ATD1DR0;
}
/*平均值濾波函數*/
float ResultsMeanAverageFilter(unsigned char SelectATDConverter,unsigned char i)
{
unsigned char count,j,k;
unsigned int valueBuf[N];
unsigned int temp;
unsigned int sum=0;
if(SelectATDConverter==0) /*當使用轉換器0進行采樣時的處理函數*/
{
for (count=0;count<N;count++)
{
valueBuf[count]=ATD0Sample(i);
}
for (count=1;count<N-1;count++)
{
sum+=valueBuf[count];
}
return ((float)sum/(N-2));
}
if(SelectATDConverter==1) /*當使用轉換器1進行采樣時的處理函數*/
{
for (count=0;count<N;count++)
{
valueBuf[count]=ATD1Sample(i);
}
for (count=1;count<N-1;count++)
{
sum+=valueBuf[count];
}
return ((float)sum/(N-2));
}
}
/*限幅濾波函數*/
unsigned int ResultsLimiteFilter(unsigned char SelectATDConverter,unsigned char i,unsigned char A)
{
unsigned int a[2];
if(SelectATDConverter==0) /*當使用轉換器0進行采樣時的處理函數*/
{
a[0]=ATD0Sample(i);
a[1]=ATD0Sample(i);
if ((a[1]-a[0]>A)||(a[0]-a[1]>A))
{return a[0];}
else
{return a[1];}
}
if(SelectATDConverter==1) /*當使用轉換器1進行采樣時的處理函數*/
{
a[0]=ATD1Sample(i);
a[1]=ATD1Sample(i);
if ((a[1]-a[0]>A)||(a[0]-a[1]>A))
{return a[0];}
else
{return a[1];}
}
}
void PWM_Initial(void)
{
PWMPOL=0x00; /*PWM脈寬極性選擇,初始輸出為低電平*/
PWMCLK=0xff; /*選擇SA,SB時鐘*/
PWMPRCLK=0x22; /*A,B時鐘預分頻為4總線時鐘頻率*/
PWMCAE=0x00; /*PWM波形采用左對齊模式*/
PWMCTL=0x00; /*設置通道為獨立工作模式*/
PWMSCLA=60; /*A的時間常數為60*/
PWMSCLB=60;
PWMPER0=100; /*0-7通道250hz*/
PWMPER1=0x63; /*0x63對應數值為99*/
PWMPER2=0x63;
PWMPER3=0x63;
PWMPER4=0x63;
PWMPER5=0x63;
PWMPER6=0x63;
PWMPER7=0x63;
PWME=0xff; /*PWM使能寄存器,使能8路PWM控制*/
PWMDTY0=100; /*各通道占空比初始化為0*/
PWMDTY1=100;
PWMDTY2=100;
PWMDTY3=100;
PWMDTY4=100;
PWMDTY5=100;
PWMDTY6=100;
PWMDTY7=100;
}
void PWM_Initial0_5khz(void)
{
PWMPOL=0x00; /*PWM脈寬極性選擇,初始輸出為低電平*/
PWMCLK=0xff; /*選擇SA,SB時鐘*/
PWMPRCLK=0x00; /*A,B時鐘預分頻為0總線時鐘頻率*/
PWMCAE=0x00; /*PWM波形采用左對齊模式*/
PWMCTL=0x00; /*設置通道為獨立工作模式*/
PWMSCLA=60; /*A的時間常數為60*/
PWMSCLB=60;
PWMPER0=100; /*0-7通道1khz*/
PWMPER1=100; /*0x63對應數值為99*/
PWMPER2=100;
PWMPER3=100;
PWMPER4=100;
PWMPER5=100;
PWMPER6=100;
PWMPER7=100;
PWME=0xff; /*PWM使能寄存器,使能8路PWM控制*/
PWMDTY0=100; /*各通道占空比初始化為0*/
PWMDTY1=100;
PWMDTY2=100;
PWMDTY3=100;
PWMDTY4=100;
PWMDTY5=100;
PWMDTY6=100;
PWMDTY7=100;
}
void PWM_Initial2khz(void)
{
PWMPOL=0x00; /*PWM脈寬極性選擇,初始輸出為低電平*/
PWMCLK=0xff; /*選擇SA,SB時鐘*/
PWMPRCLK=0x00; /*A,B時鐘預分頻為0總線時鐘頻率*/
PWMCAE=0x00; /*PWM波形采用左對齊模式*/
PWMCTL=0x00; /*設置通道為獨立工作模式*/
PWMSCLA=30; /*A的時間常數為30*/
PWMSCLB=30;
PWMPER0=100; /*0-7通道1khz*/
PWMPER1=100; /*0x63對應數值為99*/
PWMPER2=100;
PWMPER3=100;
PWMPER4=100;
PWMPER5=100;
PWMPER6=100;
PWMPER7=100;
PWME=0xff; /*PWM使能寄存器,使能8路PWM控制*/
PWMDTY0=100; /*各通道占空比初始化為0*/
PWMDTY1=100;
PWMDTY2=100;
PWMDTY3=100;
PWMDTY4=100;
PWMDTY5=100;
PWMDTY6=100;
PWMDTY7=100;
}
void PWM_Initial3khz(void)
{
PWMPOL=0x00; /*PWM脈寬極性選擇,初始輸出為低電平*/
PWMCLK=0xff; /*選擇SA,SB時鐘*/
PWMPRCLK=0x00; /*A,B時鐘預分頻為0總線時鐘頻率*/
PWMCAE=0x00; /*PWM波形采用左對齊模式*/
PWMCTL=0x00; /*設置通道為獨立工作模式*/
PWMSCLA=20; /*A的時間常數為60*/
PWMSCLB=20;
PWMPER0=100; /*0-7通道1khz*/
PWMPER1=100; /*0x63對應數值為99*/
PWMPER2=100;
PWMPER3=100;
PWMPER4=100;
PWMPER5=100;
PWMPER6=100;
PWMPER7=100;
PWME=0xff; /*PWM使能寄存器,使能8路PWM控制*/
PWMDTY0=100; /*各通道占空比初始化為0*/
PWMDTY1=100;
PWMDTY2=100;
PWMDTY3=100;
PWMDTY4=100;
PWMDTY5=100;
PWMDTY6=100;
PWMDTY7=100;
}
void PWM_Initial4khz(void)
{
PWMPOL=0x00; /*PWM脈寬極性選擇,初始輸出為低電平*/
PWMCLK=0xff; /*選擇SA,SB時鐘*/
PWMPRCLK=0x00; /*A,B時鐘預分頻為0總線時鐘頻率*/
PWMCAE=0x00; /*PWM波形采用左對齊模式*/
PWMCTL=0x00; /*設置通道為獨立工作模式*/
PWMSCLA=15; /*A的時間常數為60*/
PWMSCLB=15;
PWMPER0=100; /*0-7通道1khz*/
PWMPER1=100; /*0x63對應數值為99*/
PWMPER2=100;
PWMPER3=100;
PWMPER4=100;
PWMPER5=100;
PWMPER6=100;
PWMPER7=100;
PWME=0xff; /*PWM使能寄存器,使能8路PWM控制*/
PWMDTY0=100; /*各通道占空比初始化為0*/
PWMDTY1=100;
PWMDTY2=100;
PWMDTY3=100;
PWMDTY4=100;
PWMDTY5=100;
PWMDTY6=100;
PWMDTY7=100;
}
復制代碼
51hei.png
(4.47 KB, 下載次數: 46)
下載附件
2021-1-4 14:56 上傳
頭文件51hei下載地址:
SubFunctions.7z
(2.88 KB, 下載次數: 2)
2021-1-4 14:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久亚洲精品视频
|
日本激情视频
|
www.日韩av
|
午夜综合网
|
久久伊人国产
|
中文在线观看免费视频
|
欧美在线视频免费
|
91成人在线观看喷潮
|
日韩在线网址
|
日本高清网站
|
欧美亚洲激情
|
午夜免费在线
|
黄色天堂
|
久久精品在线观看
|
av网址在线播放
|
成人免费看
|
亚洲午夜一区
|
日韩综合久久
|
人人九九精
|
日韩欧美精品一区二区
|
亚洲精品91
|
av青青草
|
久久怡红院
|
久久艳片www.17c.com
|
成人欧美一区二区三区白人
|
国产成人精品亚洲男人的天堂
|
特黄一级片
|
在线看片你懂的
|
欧美在线网站
|
在线播放a
|
亚洲色网址
|
精品久久网站
|
日韩色在线
|
精品成人av
|
国产日韩在线播放
|
欧美综合久久
|
91午夜精品亚洲一区二区三区
|
中文字幕在线一区二区三区
|
午夜男人影院
|
九色网址
|
午夜激情网
|