久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
全國電賽電源類題目stm32驅(qū)動(dòng) 附源程序
[打印本頁]
作者:
2424942317
時(shí)間:
2017-5-18 20:47
標(biāo)題:
全國電賽電源類題目stm32驅(qū)動(dòng) 附源程序
國賽stm32電源類題目的解答,下面是程序源碼的介紹:
1.STM32的主頻為72M 在定時(shí)器中計(jì)算定時(shí)時(shí)長要用到 72M/((分頻+1)*(自動(dòng)重裝載+1))
2.IO口的工作方式主要是推挽輸出(沒有特殊要求時(shí)) 浮空輸入(外部中斷,計(jì)數(shù)器等) 復(fù)用(如定時(shí)器輸出pwm)
3.SPI串行通信時(shí)注意空閑時(shí)電平高低和在哪點(diǎn)觸發(fā),SDO腳是GPIO_Mode_IPU好像浮空也行,可以嘗試下 如果要在程序中修改SPI的觸發(fā)
方式等 要先cmd disable 然后再修改CR1寄存器的值
4.AD和DA的供電是5V 要外接電源 USB供電只有3.3
5.顯示盡量放優(yōu)先級最低的中斷,中斷處理注意清除標(biāo)志位
6.能不用delay就不要用,它會占用CPU做無用功
7.本例程中的各種變量未明確說明自己看程序研究,還有觸摸只是玩玩的,要做觸摸控制自己研究,另外外部中斷該程序中未加,
根據(jù)需要自己加進(jìn)去,注意包含IO口,EXIT和NVIC及中斷處理
8.程序中很多功能注釋掉了,自己取消注釋看著用
Write By XHJ
0.png
(67.66 KB, 下載次數(shù): 75)
下載附件
2017-5-18 21:28 上傳
stm32單片機(jī)源程序如下:
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "math.h"
#include "AD&DA.h"
#include "Tim.h"
/***************Write By XHJ******************/
u16 AD_Buffer_Rx[8];
__IO uint64_t IC2Value = 0;
__IO uint64_t DutyCycle = 0;
__IO uint64_t Frequency = 0;
__IO uint64_t IC1Value = 0;
__IO uint64_t DutyCycle1 = 0;
__IO uint64_t Frequency1 = 0;
uint64_t capture_Times,A,SHI,GE;
uint64_t total_Time,total_Time1;
uint64_t low_Time,low_Time1;
u32 SIN_LUT_index = 0;
u32 Cnt_Dir = 0;
double Sin_Lut[360]= {0};
double Sin_Lut2[360]= {0};
double Sin_Lut3[360]= {0};
u8 LowRangeFlag= 0;
u8 HighRangeFlag= 0;
u16 SetUpPara= 1;
u16 amp = 1000;
u16 fqc = 5; //fqc為正弦調(diào)幅波頻率的1/10,單位Hz。
u16 fz = 15; //fz為載波頻率,單位kHz。
u16 fe=10,flag=0,psc;
u16 count=0; //計(jì)數(shù)值
uint8_t TxBuffer1[] = "USART Interrupt Example: This is USART1 DEMO";
uint8_t RxBuffer1[],rec_f,tx_flag,RxCounter1;
#define PWMSetUpMax 2000
/***********初始化生成sin數(shù)組****************/
void SPWM_Init( void )
{
u16 i;
for( i=0; i<360; i++) //A
{
Sin_Lut[i] = 100*cos(2*3.1415926*i/360.0);
}
for( i=0; i<360; i++) //B
{
Sin_Lut2[i] = 100*cos(2*3.1415926*(i-120)/360.0);
}
for( i=0; i<360; i++) //C
{
Sin_Lut3[i] = 100*cos(2*3.1415926*(i+120)/360.0);
}
}
int main(void)
{
int i=1000;
delay_init(); //延時(shí)函數(shù)初始化
SPI1_Init(); //LCD SPI1初始化(包含各種時(shí)鐘初始化)
//uart3_init(9600); //串口初始化為9600
LCD_MyInit(); //LCD 初始化
SPI_Configuration(); //AD DA配置初始化 SPI2和GPIO
POINT_COLOR=RED;//設(shè)置字體為紅色
BACK_COLOR=WHITE;//背景白色
DAC7565_Init(); //DA初始化
//SPWM_Init( ); //sin數(shù)組初始化
//TIM_Configuration(); //定時(shí)器及中斷向量配置
//TIM_Cmd(TIM1,ENABLE); //打開定時(shí)器1
/* TIM1 Main Output Enable */
//TIM_CtrlPWMOutputs(TIM1, ENABLE);
//TIM_Cmd(TIM2,ENABLE); //打開定時(shí)器2
//TIM_Cmd(TIM3,ENABLE); //打開定時(shí)器3
//TIM_Cmd(TIM4,ENABLE); //打開定時(shí)器4
//設(shè)定AD值
Set_DAValue(0,4000);
Set_DAValue(1,3062);
Set_DAValue(2,2048);
Set_DAValue(3,1024);
while(1)
{
i++;
AD_Convert(); //AD轉(zhuǎn)換
LCD_ShowNum(0,0,AD_Buffer_Rx[0],5,16); //顯示AD值
LCD_ShowNum(0,100,AD_Buffer_Rx[1],5,16);
LCD_ShowNum(0,200,AD_Buffer_Rx[2],5,16);
LCD_ShowNum(0,300,AD_Buffer_Rx[3],5,16);
delay_ms(500);
Set_DAValue(0,2000);
// psc=648648/fe;
// TIM1->PSC=psc; //預(yù)分頻設(shè)置
// if(flag==0)
// {
// fe+=10;
// if(fe>=30000){flag=1;}
// }
// if(flag==1)
// {
// fe-=10;
// if(fe<=10){flag=0;}
// }
// count=TIM2->CNT;
}
}
/***********T2中斷處理SPWM***********/
void TIM2_IRQHandler(void)
{
TIM_Cmd(TIM1,DISABLE); //關(guān)閉定時(shí)器1
// if( SIN_LUT_index == 360 )
// {
// SIN_LUT_index= 0;
// }
// TIM1->CCR1 = (u16)((18000/fz)-amp*Sin_Lut[SIN_LUT_index]*SetUpPara/PWMSetUpMax/1000.0);
// TIM1->CCR2 = (u16)((18000/fz)-amp*Sin_Lut2[SIN_LUT_index]*SetUpPara/PWMSetUpMax/1000.0);
// TIM1->CCR3 = (u16)((18000/fz)-amp*Sin_Lut3[SIN_LUT_index]*SetUpPara/PWMSetUpMax/1000.0);
// SIN_LUT_index++;
// if( SetUpPara < PWMSetUpMax )
// {
// SetUpPara++;
// }
TIM_ClearFlag(TIM2,TIM_FLAG_Update); //中斷標(biāo)志位清零
}
/***********T3中斷處理***********/
void TIM3_IRQHandler(void)
{
if(flag==0)
{
fe+=10;
if(fe>=20000){flag=1;}
}
if(flag==1)
{
fe-=10;
if(fe<=10){flag=0;}
}
psc=654545/fe;
TIM1->PSC=psc; //預(yù)分頻設(shè)置
TIM_ClearFlag(TIM3,TIM_FLAG_Update); //中斷標(biāo)志位清零
}
/***********T4輸入捕獲***********/
void TIM4_IRQHandler(void)
{
if (TIM_GetITStatus(TIM4, TIM_IT_CC2) != RESET)
{
/* Clear TIM8 Capture compare interrupt pending bit */
TIM_ClearITPendingBit(TIM4, TIM_IT_CC2);
/* Get the Input Capture value */
IC2Value =TIM_GetCapture2(TIM4);
if (IC2Value != 0)
{
/* Duty cycle computation */
total_Time=IC2Value;
//low_Time=TIM_GetCapture1(TIM4);
//DutyCycle=(low_Time+1)*100/total_Time;
//SHI=DutyCycle;
low_Time=0;
total_Time=0;
/* Frequency computation */
Frequency = SystemCoreClock/IC2Value/720; //72M/(TIM_Prescaler+1)/IC2Value
}
else
{
DutyCycle = 0;
Frequency = 0;
}
}
if (TIM_GetITStatus(TIM4, TIM_IT_CC1) != RESET)
{
/* Clear TIM8 Capture compare interrupt pending bit */
TIM_ClearITPendingBit(TIM4, TIM_IT_CC1);
/* Get the Input Capture value */
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
STM32F103SimpleDemo.rar
(389.62 KB, 下載次數(shù): 130)
2017-5-18 20:46 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
陶淘51
時(shí)間:
2017-7-20 15:23
寫的很好
作者:
691757842
時(shí)間:
2017-7-30 22:38
你好。我在論壇看到了你的SPWM程序,我想詢問你下,就是我想改成輸出頻率為50HZ的話,要怎么去改,還有,載波頻率的話,要怎么去理解?希望你抽空回復(fù)我一下。
作者:
1172025273
時(shí)間:
2017-8-6 18:03
謝謝、
作者:
1172025273
時(shí)間:
2017-8-6 18:04
寫的很好、
作者:
123456WH
時(shí)間:
2017-8-6 21:06
很想要,可是金幣不夠
作者:
tianguibin
時(shí)間:
2018-10-29 15:49
非常實(shí)用
作者:
tianguibin
時(shí)間:
2018-12-6 15:07
樓主能上傳一波硬件圖么,DAC7565轉(zhuǎn)換輸出沒反應(yīng),跪求
作者:
aaaaaa。
時(shí)間:
2019-5-18 11:36
這是哪年的國賽題
作者:
liumingyue
時(shí)間:
2019-6-15 22:14
DAC7565的程序能上傳CSDN一份嗎?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人黄性视频
|
国产毛片在线
|
午夜视频免费看
|
超碰成人网
|
精品国产欧美
|
一区在线视频
|
理论片中文字幕
|
日韩av在线看
|
一级片免费网站
|
精品1区2区
|
精品国产一区二区三区久久久蜜月
|
99在线免费观看
|
成人激情综合
|
中文字幕在线视频观看
|
91狠狠综合
|
日韩欧美在线免费观看
|
国产一区二区三区视频在线
|
欧美视频在线观看免费
|
国产午夜一区二区三区
|
亚洲精品一区二区三区精华液
|
俄罗斯毛片
|
欧美亚洲视频
|
欧美一级淫片bbb一84
|
一二三四区在线观看
|
全部免费毛片在线播放高潮
|
国产精品久久久久久久久久久久久久
|
日韩精品久久久久久久酒店
|
亚洲天堂男人天堂
|
激情婷婷综合
|
91成人在线观看喷潮
|
人人爽夜夜爽
|
亚洲视频一区在线观看
|
亚洲精品美女
|
日韩国产一区二区
|
成人午夜网
|
人人干人人草
|
欧美999
|
黄色片网站在线观看
|
一区二区三区网站
|
精品亚洲一区二区三区四区五区
|
欧美成人极品
|