## 本項目獲浙江理工大學第五屆電子設計競賽一等獎
#### 隊伍編號:ZSTU013
#### 隊伍成員:吳慶鵬、孫璟、謝周楊
#### 指導教師:金海
## 《校級電子設計競賽》 設計總結報告
### 摘要:
在使用電池供電的某些設備中,很多是通過直流升壓電路獲得所需要的高電壓,例如照相機中的閃光燈。本設計要求將電池的電能轉變為恒流輸出,驅動高亮度白光 LED。設計的核心部分為直流-直流穩流電源變換器,電壓變換后通過恒流控制電路實現恒流輸出。以STM32為控制器,實現對于輸出脈沖的控制,同時配置獨立按鍵和蜂鳴器組成的模式選擇、報警模塊。該設計電路主要由DC/DC電壓變換模塊、控制模塊、模式選擇模塊、恒流控制模塊、保護電路模塊、報警電路模塊組成。
### 一、課題任務
* 設計并制作一個 LED 閃光燈電源。該電源的核心為直流-直流穩流電源變換器,它將電池的電能轉換為恒流輸出,驅動高亮度白光 LED。電源有連續輸出和脈動輸出兩種模式,并具有輸出電壓限壓保護和報警功能。
##### 1.基本要求
(1)輸入電壓3.0V~3.6V。
(2)連續輸出模式輸出電流可設定為100、150、200mA三檔,最高輸出電壓不低于10V,最低輸出電壓為0V(輸出短路)。
(3)在規定的輸入電壓和輸出電壓范圍內,輸出電流相對誤差小于2%。
(4)等效直流負載電阻過大時,輸出電壓限幅值不高于10.5V并報警。
(5)輸出電流200mA,輸出電壓10V時,效率不低于80%。
(6)自制一個 LED 閃光燈,用于演示。
##### 2.發揮部分
(1)具備脈動輸出模式,輸出占空比為1∕3,相對誤差小于2%。
(2)輸出電流峰值可設定為300、450、600mA三檔,相對誤差小于5%,間歇期電流小于1mA。
(3)脈沖周期可設定為10、30、100ms三檔,相對誤差小于2%,上升時間、下降時間均不大于100μs,電流過沖不大于10%。
(4)輸出脈沖個數可設定為1到5個和連續的脈沖串(以便測試),每按一次啟動鍵輸出一次脈沖串。
(5)其他
### 二、方案比較與選擇
##### 2.1 系統總體方案
系統以STM32單片機為核心組成DC/DC升壓電路,為輸出端提供滿足要求的大電壓。通過INA282構成恒流電路,使得電路能夠輸出穩定的受控電流以滿足設計精度要求。過壓檢測電路通過獲取負載兩端電壓差值與參考電壓比較輸出過壓信號并回傳給單片機。系統控制模塊基于STM32單片機設計,包括鍵盤電路、
蜂鳴器報警電路、顯示電路、模式選擇電路、恒流模塊等。
系統功能框圖如圖1所示。

圖1 系統功能框圖
##### 2.2 電源變換模塊
* 方案一:使用TPS61088升壓芯片實現。TPS61008是一款高功率密度的全集成升壓轉換器。雖效率高,能滿足設計要求,但成本高,故應用較少。
* 方案二:自行搭建BOOST直流升壓電路。電路各部分設計參數可自主選擇,可調節性好,設計靈活。但是因為元件質量、精度等方面的限制,功能穩定性差。額外增加穩定、保護電路后電路效率降低。
* 方案三:搭建雙向DC-DC模塊,利用STM32單片機控制PWM波占空比從而控制電路的輸出電壓,且單片機的操作簡單,精度高,穩定性強,電路效率高,電路所需元器件少且可以提供穩定的電壓。
綜合以上分析,本方案需要輸入電壓低、輸出電壓高、功率大、精度高、電源效率高的升壓模塊,因此選擇采用方案三。
##### 2.3 恒流控制電路
* 方案一:采用一只
恒流二極管。優點是電路構造簡單,缺點是恒流二極管的恒流特性并不是非常好,電流規格比較少,無法滿足設計精度要求。
* 方案二:采用兩只相同型號的三極管,利用三極管相對穩定的be電壓作為基準。這種恒流源簡單易行,但是即使是相同型號的三極管be電壓也存在個體差異,因此并不適合高精密度的恒流要求。
* 方案三:采用INA282將電路的電流轉換為電壓信號,便于采集與反饋,且INA282的放大倍數大,工作穩定。
綜合以上分析,本設計采用方案三。
### 三、電路設計
##### 3.1 單片機功能模塊電路設計
本設計采用STM32單片機作為控制器。除單片機最小系統外,在外圍搭建了輸入鍵盤、顯示輸出、蜂鳴器報警電路等部分。通過按鍵輸入改變端口輸出信號,控制調整輸出電流。
通過輸入端口接受過壓檢測模塊的過壓信號后觸發蜂鳴器報警,實現對于10.5V以上輸出電壓的報警。顯示輸出由
液晶顯示屏完成,監視電路中部分參數的變化并實時顯示。輸入鍵盤由6個獨立按鍵組成,分別設置為:模式選擇按鍵、電流選擇按鍵、脈沖周期選擇按鍵、脈沖次數選擇按鍵、脈沖觸發與關閉按鍵。
單片機功能模塊原理圖如圖2所示,按鍵連接圖如圖3所示。

圖2 單片機功能模塊原理圖

圖3 按鍵連接圖
##### 3.2 升壓模塊電路設計
本設計采用雙向DC-DC電路進行升壓。通過控制開關T1和T2,達到雙向直流升壓與降壓的目的。在升壓運行時,T2動作,T1截止,變換器工作在Boost狀態;當T1動作,T2截止時,變換器工作在Buck狀態,實現降壓功能。
本次設計只用到了該電路的Boost功能,但相比于純Boost電路,能夠提高電路的穩定性。本次設計利用IR2103作為信號放大芯片驅動開關管的導通實現升壓。
升壓模塊電路原理圖如圖4所示。

圖4 升壓模塊電路原理圖
##### 3.3 恒流模塊設計
本設計采用INA282作為恒流模塊,INA282接在采樣電阻兩端,能將微小的電流信號轉化成電壓信號并放大,將電壓信號傳輸回單片機,與單片機共同合作完成恒流。
恒流模塊電路原理圖如圖5所示。

圖5 恒流模塊電路原理圖
##### 3.4 過壓檢測及報警信號產生電路
本設計采用分壓檢測式電壓檢測報警。在負載兩端并聯高阻值電阻,并利用單片機的ADC功能對電壓進行采集以及換算,當電壓超出限壓值時發出報警信號。
報警信號產生電路使用蜂鳴器,檢測電壓過高時,單片機發出高電平信號,控制三極管導通,蜂鳴器發出報警音。
過壓檢測及報警信號產生電路原理圖如圖6所示。

圖6 過壓檢測及報警信號產生電路原理圖
##### 3.5顯示電路
采用TFTLCD作為顯示,可以顯示當前模式、當前設置電流、當前設置周期以及當前設置周期次數。
##### 3.6 LED燈電路
采用經典LED白光燈作為負載,具有3V3W的額定功率和額定電壓,多個串聯即可滿足設計要求,具有發光穩定,亮度高的特點。
### 四、程序設計
##### 1.?單片機IO口引腳分配表
| | |
| --- | --- |
|
IO口 |
功能 |
|
PA0 |
脈沖觸發按鍵 |
|
PA3 |
電流選擇按鍵 |
|
PA12 |
模式選擇按鍵 |
|
PC6 |
脈沖周期選擇按鍵 |
|
PC7 |
脈沖次數加1按鍵 |
|
PC8 |
脈沖次數減1按鍵 |
|
PA2 |
繼電器控制 |
|
PD2 |
脈沖控制 |
|
PB5 |
警報信號控制 |
|
PA8 |
PWM波輸出 |
|
PC3 |
電流反饋 |
|
PC1 |
負載上端電壓檢測 |
|
PC0 |
負載下端電壓檢測 |
|
PA13 |
LCD_PWR |
|
PA1 |
LCD_RST |
|
PA6 |
LCD_DC |
|
PC4 |
LCD_CS |
|
PA5 |
SPI口 |
|
PA7 |
SPI口 |
表1 單片機IO口引腳分配表
##### 2.?程序軟件流程圖
系統上電后進入模式選擇界面,單片機掃描實現按鍵檢測。通過按鍵分別選擇連續/脈動輸出模式、輸出電流、脈沖周期、脈沖個數。單片機通過定時器確定輸出脈沖定時,并輸出相應的脈沖控制信號。同時在主程序中循環檢測過壓信號,當有過壓信號輸入時,蜂鳴器報警。

圖7 程序軟件基本流程圖
### 五、測試方案
##### 5.1 測試儀器
| 序號 | 名稱 |
| --- | --- |
| 1 | 萬用表 |
| 2 | 電源臺 |
| 3 | 示波器 |
| 4 |
滑動變阻器 |
表2 測試儀器表
##### 5.2 測試方法
###### 5.2.1 電流測試:
在電源輸出端串接萬用表與滑動變阻器,調節滑動變阻器的值,選擇100mA檔輸出時,記錄測量數據,不斷調節滑動變阻器并觀察電流是否變化。同理測試150mA和200mA電流檔。
###### 5.2.2 效率測試:
在LED閃光燈電源輸入端接入電源臺并串接一個萬用表,在LED閃光燈電源輸出端串接滑動變阻器,將滑動變阻器調至50Ω。計算公式為:

###### 5.2.3 脈動輸出測試:
在輸出端接入等效電阻,選擇脈動輸出模式,設定周期并確定輸出,將示波器接地端接在輸出負端,
示波器探頭接輸出正極,觀察示波器占空比、周期、上升時間、下降時間等數據并記錄。
### 六、系統調試
6.1 輸入電壓為3V時,選擇電路模式為“連續輸出+100mA”。調節負載大小,測得輸出電流值在100mA附近。


6.2 輸入電壓為3V時,選擇電路模式為“連續輸出+200mA”。調節負載大小,測得輸出電流值在200mA附近。


6.3 選擇電路模式為“脈動輸出+300mA+周期10ms+連續脈沖串”。調節負載大小,測得占空比為1/3,周期在10ms附近,輸出電流值在300mA附近。

### 七、數據測試與處理
7.1 基礎要求測試
通過外接滑動變阻器,在100mA、150mA、200mA電流值下不斷增加負載阻值,觀察輸出電流變化。
| 電阻(Ω) | 設置電流(mA) | 實測電流(mA) | 誤差(%) | 效率 |
| ----- | -------- | -------- | ----- | --- |
| 35.00 | 100 | 99.2 | 0.8 | |
| 150 |
148.4 |
1.066666667 |
? | |
|
200 |
199 |
0.5 |
? | |
|
40.00? |
100 |
98.7 |
1.3 |
? |
|
150 |
147.5 |
1.666666667 |
? | |
|
200 |
196.5 |
1.75 |
? | |
|
45.00? |
100 |
98.6 |
1.4 |
? |
|
150 |
147.5 |
1.666666667 |
? | |
|
200 |
198.5 |
0.75 |
? | |
|
50.00? |
100 |
98.6 |
1.4 |
? |
|
150 |
147.2 |
1.866666667 |
? | |
|
200 |
197.2 |
1.4 |
90.70% | |
表3 數據記錄(輸入電壓=3V)
當輸入電壓為3V時,記錄到的數據與理想值之間的誤差較小,各參數符合題目要求。
7.1.2 當輸入電壓為3.3V時,相關參數記錄如下。
| | | | | |
| --- | --- | --- | --- | --- |
|
電阻(Ω) |
設置電流(mA) |
實測電流(mA) |
誤差(%) |
效率 |
|
35.00? |
100 |
99.3 |
0.7 |
? |
|
150 |
148.2 |
1.2 |
? | |
|
200 |
199.1 |
0.45 |
? | |
|
40.00? |
100 |
99.1 |
0.9 |
? |
|
150 |
147.6 |
1.6 |
? | |
|
200 |
198.2 |
0.9 |
? | |
|
45.00? |
100 |
98.7 |
1.3 |
? |
|
150 |
147.9 |
1.4 |
? | |
|
200 |
198.1 |
0.95 |
? | |
|
50.00? |
100 |
98.8 |
1.2 |
? |
|
150 |
147.3 |
1.8 |
? | |
|
200 |
198 |
1 |
92.20% | |
表4 數據記錄(輸入電壓=3.3V)
當輸入電壓為3.3V時,記錄到的數據與理想值之間的誤差較小,各參數符合題目要求。
7.1.3 當輸入電壓為3.6V時,相關參數記錄如下。
| | | | | |
| --- | --- | --- | --- | --- |
|
電阻(Ω) |
設置電流(mA) |
實測電流(mA) |
誤差(%) |
效率 |
|
35.00? |
100 |
99.4 |
0.6 |
? |
|
150 |
147.9 |
1.4 |
? | |
|
200 |
199.3 |
0.35 |
? | |
|
40.00? |
100 |
98.8 |
1.2 |
? |
|
150 |
148.2 |
1.2 |
? | |
|
200 |
199.1 |
0.45 |
? | |
|
45.00? |
100 |
99 |
1 |
? |
|
150 |
148.3 |
1.133333333 |
? | |
|
200 |
198.8 |
0.6 |
? | |
|
50.00? |
100 |
99.1 |
0.9 |
? |
|
150 |
148.1 |
1.266666667 |
? | |
|
200 |
198.9 |
0.55 |
90.20% | |
表5 數據記錄(輸入電壓=3.6V)
當輸入電壓為3.6V時,記錄到的數據與理想值之間的誤差較小,各參數符合題目要求。
7.2 發揮部分測試
| | | | | | | | | |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 電阻(Ω) | 設置電流(mA) | 實測峰值電流(mA) | 設置周期(ms) | 實際高電平時間(ms) | 實際低電平時間(ms) | 實際周期(ms) | 電流誤差% | 周期誤差% |
| 30 | 300 | 295 | 10 | 3.36 | 6.6 | 9.96 | 1.67 | 0.4 |
| 30 | 9.9 | 20.1 | 30 | 0 | | | | |
| 100 | 33.2 | 66.4 | 99.6 | 0.4 | | | | |
| 20 | 450 | 451 | 10 | 3.32 | 6.6 | 9.92 | 0.22 | 0.8 |
| 30 | 10 | 20 | 30 | 0 | | | | |
| 100 | 33.2 | 66.4 | 99.6 | 0.4 | | | | |
| 15 | 600 | 572 | 10 | 3.4 | 6.6 | 10 | 4.67 | 0 |
| 30 | 10 | 20 | 30 | 0 | | | | |
| 100 | 32.4 | 67.6 | 100 | 0 | | | | |
在脈動輸出模式下,測得的各項參數與理想值之間的誤差較小,各參數基本符合題目要求。
### 八、總結
本次設計經過了長達兩個星期的時間,隊員在整個過程中得到了大幅度的鍛煉。電賽很大部分都是在考驗我們的基礎是否扎實,敢不敢與所學的知識較真。我們在這兩個星期的時間里鞏固了之前學到的知識,也學到了更多新知識,這些使我們獲益匪淺。
學以致用,光學不用等于白學。學工科的人更要注重動手能力。這次任務中,需要動手的部分很多,不光是電路,還有怎么把各個模塊連接到一起,使電路更簡潔,外觀更美觀,使作品的性能也更加優越及穩定。這都在考驗著我們,最終我們還是克服了這些困難,完成了任務。
在剛開始知道題目時,我們構想了多個方案,并且一一嘗試,最后采用的雙向DC-DC電路升壓穩定,便于控制,而且精度和效率也符合要求。在確定最終方案以后,我們對方案做了進一步優化,調整pwm波最合適的輸出頻率,進一步提升升壓效率,從而達到要求。
在測試過程中,我們遇到了許多問題,經過討論和上網查資料,我們一一解決了困難,但是設計中還存在著一些不足。
校賽已接近尾聲,這期間我們小組有過爭論,有過歡笑,也有過煩悶。不過最后我們做出了一個盡力而為的作品。這次比賽極大得鍛煉了我們的各方面能力,進一步加強了我們對電源設計的理解,也認識到團隊的重要性。我們會繼續努力,總結自己的不足,提升自己的知識與技能水平。
### 九、參考文獻
1.《LED閃光燈電源》趙曉瑩 安徽機電職業技術學院 安徽蕪湖 241000;
2.《LED閃光燈電源的設計》彭雯 湖南工業職業技術學院 湖南長沙 410000。
十、附錄
A.?設計電路圖(原理圖、PCB圖)
(a)原理圖

(b)PCB圖

B.?程序
```
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "tftlcd.h"
#include "spi.h"
#include
#include "timer.h"
#include "key.h"
#include "dac.h"
#include "adc.h"
#include "pwm.h"
#include "pwmplus.h"
vu8 ?key = 0;
u16 temp;
int kp = 10;//比值
int e1 = 0;//當前誤差
int u = 0;//增量
void run(u16 I,u16 Pe,u16 Pu ){
int i,j;
j=1;
LED0=0; ??//繼電器關閉
??if(Pu!=9999){
delay_ms(Pu*Pe);
}
??else if(Pu==9999){
while(j){
key=KEY_Scan(0);
switch(key){
case WKUP_PRES:
j=0;
break;
}
}
}
?}
int main(void)
{
u16 mode\_flag,i\_flag,period\_flag,pulses\_flag;
u16 adcxI_T,adcxI,adcxU;
delay_init(); ???? ?//延時函數初始化
NVIC\_PriorityGroupConfig(NVIC\_PriorityGroup\_2);// 設置中斷優先級分組2
LED_Init(); ?? //初始化與LED連接的硬件接口
KEY_Init();
LCD_Init(); ??? //初始化LCD
Adc_Init();
Dac1\_Init(); ? //DAC通道1初始化 TIM1\_PWM\_Init(7199,0);//72000000/7200=10khz
// ??TIM3\_PWM\_Init(7199,999);//72000000/7200/1000=10;//pe=100 a=999 ?pe=30 a=299 ?pe=10 a=99
uart_init(9600); ? //9600
TIM1->CCR1=4390;//恒壓模塊//100 4390 ?//150 ?2790 ?//
mode_flag=1;
i_flag=100;
period_flag=0;
pulses_flag=0;
????LED2=0; //蜂鳴器關閉//B5
??LED1=0; //脈沖關閉//D2
??LED0=1;//繼電器打開//A2
? while(1)
{
adcxU=Get\_Adc\_Average(ADC\_Channel\_11,50);//輸出電壓 c1上端 adcxI\_T=Get\_Adc\_Average(ADC\_Channel\_10,50);//兩端電壓c0 //下端 adcxI=Get\_Adc\_Average(ADC\_Channel\_13,50);//檢測電壓,C3 ?LCD\_ShowString(0, 0, 64, 32, 32,"mode");//模式
??LCD_ShowString(0, 40, 64, 32, 32,"i");//電流
??LCD_ShowString(0, 80, 64, 32, 32,"peri");//周期
??LCD_ShowString(0, 120, 64, 32, 32,"puls");//脈沖數量
??LCD\_ShowxNum(80, 0,mode\_flag,8, 32, 0);
??? LCD\_ShowxNum(80, 40,i\_flag,8, 32, 0);
??LCD\_ShowxNum(80, 80,period\_flag,8, 32, 0);
??LCD\_ShowxNum(80, 120,pulses\_flag,8, 32, 0);
??????LCD_ShowxNum(0, 160,adcxU,4, 32, 0);
LCD\_ShowxNum(80, 160,adcxI\_T,4, 32, 0);
??LCD_ShowxNum(0, 200,adcxI,4, 32, 0);
??????LCD_ShowxNum(80, 200,TIM1->CCR1,4, 32, 0);
key=KEY_Scan(0);
switch(key)
{
case KEY0\_PRES: //A12//模式選擇 if(mode\_flag==1) {
mode_flag=2;
i_flag=300;
period_flag=10;
pulses_flag=1;
}
??else if(mode_flag==2){
mode_flag=1;
i_flag=100;
period_flag=0;
pulses_flag=0;
}
break;
case KEY1\_PRES: ????//A3//電流選擇 if(mode\_flag==1){
?if(i\_flag==100) i\_flag=150;
?else if(i\_flag==150) i\_flag=200;
?else if(i\_flag==200) i\_flag=100;
}
else if(mode_flag==2){
if(i\_flag==300) i\_flag=450;
?else if(i\_flag==450) i\_flag=600;
?else if(i\_flag==600) i\_flag=300;
}
break;
case WKUP_PRES: ????//A0//觸發脈沖
if(mode_flag==2)
{
LED0=0; ??//繼電器關閉
TIM3\_PWM\_Init(7199,period\_flag*10-1);//72000000/7200=10000;//pe=100 a=999 ?pe=30 a=299 ?pe=10 a=99
TIM3->CCR4=2400;
??run(i\_flag,period\_flag,pulses\_flag);
TIM_CtrlPWMOutputs(TIM3,DISABLE);
??LED0=1; /繼電器打開
}
break;
case KEY2_PRES: ????//C6//脈沖周期選擇
if(mode_flag==2){
if(period\_flag==10.0) period\_flag=30.0;
else if(period\_flag==30.0) period\_flag=100.0;
else if(period\_flag==100.0) period\_flag=10.0;
}
break;
case KEY3_PRES: ????//C7//脈沖數量選擇加
if(mode_flag==2){
pulses_flag++;
if(pulses\_flag==6) pulses\_flag=9999;
??else if(pulses\_flag==10000) pulses\_flag=1;
}
break;
case KEY4_PRES: ????//C8//脈沖數量選擇減
if(mode_flag==2){
pulses_flag--;
if(pulses\_flag==0) pulses\_flag=9999;
else if(pulses\_flag==9998) pulses\_flag=5;
}
break;
}
//?ˉ±¨
if(adcxU-adcxI_T>2126){
LED2=1; ??????????????//B5報警
delay_ms (1000);
LED2=0; ??????????????//B5報警
delay_ms (1000);
LED2=1; ??????????????//B5報警
delay_ms (1000);
LED2=0; ??????????????//B5報警
delay_ms (1000);
TIM1->CCR1=4390;
}else{
LED2=0;
}
//電流控制
if(i_flag==100)
{
if(adcxI>448 && adcxICCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
else if (adcxI>454)
{
TIM1->CCR1 += 5;
}
}
e1 = adcxI - 450;
u = 1 *e1;
TIM1->CCR1 +=u;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
? }
else if(i_flag==150){
if(adcxICCR1-=5;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
if(adcxI>708){
TIM1->CCR1+=5;
}
e1 = adcxI - 705;
u = 1 *e1;
TIM1->CCR1 +=u;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
else if(i_flag==200){
if(adcxICCR1-=5;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
if(adcxI>971){
TIM1->CCR1+=5;
}
e1 = adcxI - 968;
u = 1 *e1;
TIM1->CCR1 +=u;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
else if(i_flag==300){
if(adcxICCR1-=5;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
if(adcxI>1469){
TIM1->CCR1+=5;
}
e1 = adcxI -1467;
u = 1 *e1;
TIM1->CCR1 +=u;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
else if(i_flag==450){
if(adcxICCR1-=5;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
if(adcxI>2286){
TIM1->CCR1+=5;
}
e1 = adcxI -2283;
u = 1 *e1;
TIM1->CCR1 +=u;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
else if(i_flag==600){
if(adcxICCR1-=5;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
if(adcxI>2926){
TIM1->CCR1+=5;
}
e1 = adcxI -2923;
u = 1 *e1;
TIM1->CCR1 +=u;
if(TIM1->CCR1CCR1=4390;
if(TIM1->CCR1>=7000) ?TIM1->CCR1=4390;
}
}
}
```
C.?作品圖片



