娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月07日(星期二)

正在發生

2020年01月07日 | stm32通過電調帶動電機(可按鍵調速)

發布者:樂觀向前 來源: eefocus關鍵字:stm32  電調  帶動電機  按鍵調速 手機看文章 掃描二維碼
隨時隨地手機看文章

這幾天在做32通過電調帶動電機的實驗,上網一查,發現這方面的資料很少,經過自己的親自實踐,總結出以下經驗,供大家參考。


論壇上也有很多人說自己在做,但是都遇到了同樣的瓶頸。我想他們大多是pwm的頻率和占空比沒有調到合適的值吧。


首先,我在網上只找到一片很好的文章,是瑞生大神寫的:http://www.rationmcu.com/lpc1114/1126.html


我的電機是銀燕2212/1400kv經典電機 ,電調也是銀燕40A無刷電調。


通過它知道,當pwm設置為500hz的 時候電調才能正常的工作,剛開始時高電平時間要控制在0.7-1.9左右,讓電機帶電自檢。


通過按鍵控制占空比可以很好地 實現這一點。


好了,下面上我的代碼。


先來頭文件吧


#ifndef _Motor_H_

#define _Motor_H_

#include "stm32f10x.h"


/******************************************************************************

                            全局函數聲明

*******************************************************************************/ 

void Motor_Init(void);

//void Motor_Out(int16_t duty1,int16_t duty2,int16_t duty3,int16_t duty4);


#endif

 

主菜:


  1 /***************************************************************************************

  2   1/給單片機寫程序:使得某引腳輸出500Hz的PWM信號,初始化時高電平時間設置為1.9ms,

  3   然后在while循環里面加入檢測按鍵的程序,當按鍵按下,把高電平設置為0.7ms。

  4     2/1.給單片機寫程序,把剛才的PWM初始化的高電平設置為0.7ms,保證剛上電,電調不會讓電機轉動。

  5     然后給修改按鍵按下的程序,修改為,按一次按鍵,高電平時間增加一點點,最大增加到1.9ms。

  6     

  7     我的按鍵再c13(k2)和e0(k1)

  8     日期:2016.3.4

  9 ***************************************************************************************/

 10 

 11 #include "dianji.h"

 12 

 13   uint8_t indexWave[] = {5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};  //占空比表

 14     

 15 //聲明函數

 16 void Tim2_init(void);

 17 void Motor_Init(void);

 18 void Init_NVIC(void);

 19 void Delay_Ms(uint16_t time);  

 20 void Delay_Us(uint16_t time); 

 21 void Init_TI_KEY(void);

 22 

 23         

 24 int main(void)

 25 {

 26  

 27     SystemInit();                //系統時鐘配置

 28     Motor_Init();

 29     Tim2_init();

 30     Init_NVIC();                //中斷向量表注冊函數

 31     Init_TI_KEY();                //按鍵引腳中斷初始化

 32     

 33     while(1);

 34     

 35 }

 36 

 37 

 38 void Tim2_init(void)

 39 {    

 40     

 41     TIM_TimeBaseInitTypeDef        TIM_TimeBaseStructure;

 42     TIM_OCInitTypeDef              TIM_OCInitStructure;

 43     

 44      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

 45     

 46     TIM_TimeBaseStructure.TIM_Period = 20-1;    //設置ARR的值為19,從0計數到19,剛好是2ms ,500hz

 47     TIM_TimeBaseStructure.TIM_Prescaler = 7200-1;//設置PSC的值為7199,這樣的話每計數一次為0.1ms 

 48     

 49     

 50     TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim

 51     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIMx向上計數模式

 52     TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根據TIM_TimeBaseStructure中指定的參數初始化外設TIM2

 53     

 54     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式

 55     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能

 56     

 57     TIM_OCInitStructure.TIM_Pulse = 0; //設置待裝入捕獲比較寄存器的脈沖值,剛開始可以設置為0.

 58     TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高

 59     

 60     TIM_OC1Init(TIM2, &TIM_OCInitStructure); 

 61     TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR1上的預裝載寄存器

 62 

 63     TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIM2在ARR上的預裝載寄存器

 64     TIM_Cmd(TIM2, ENABLE);  //使能TIM2外設

 65 }

 66 

 67 /******************************************************************************

 68 函數原型:    void Motor_Init(void)

 69 功    能:    PWM初始化

 70 *******************************************************************************/ 

 71 void Motor_Init(void)

 72 {

 73     

 74     GPIO_InitTypeDef GPIO_InitStructure;

 75     

 76     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);   //使能電機用的時鐘

 77     

 78     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;     //設置電機使用到得管腳

 79     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

 80     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 

 81     GPIO_Init(GPIOA, &GPIO_InitStructure);

 82 

 83 }

 84 

 85 /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 86 ** 函數名稱: KEY_TI_Init

 87 ** 功能描述: 按鍵 中斷配置 

 88 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/

 89 void Init_TI_KEY(void)

 90 {

 91     EXTI_InitTypeDef  EXTI_InitStructure;                    //定義一個EXTI結構體變量

 92 

 93     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);        //使能IO復用功能,使用中斷功能重要!!!

 94 

 95     GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);//配置端口C的13引腳為中斷源      重要!! 板上標號INT2

 96     GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource0); //配置端口E的0引腳為中斷源      重要!! 板上標號INT1

 97     EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line13;//

 98     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;        //中斷模式為中斷模式

 99     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    //下降沿出發

100     EXTI_InitStructure.EXTI_LineCmd = ENABLE;                //使能中斷線

101     EXTI_Init(&EXTI_InitStructure);                            //根據參數初始化中斷寄存器

102 }

103 

104 /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

105 ** 函數名稱: Init_NVIC

106 ** 功能描述: 系統中斷配置

107 

108 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/

109 void Init_NVIC(void)

110 { 

111     NVIC_InitTypeDef  NVIC_InitStructure;

112          

113     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                  //設置中斷優先級分組2

114 

115     NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;        //設定中斷源為PC13

116     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;    //中斷占優先級為2

117     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;            //副優先級為0

118     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                //使能中斷

119     NVIC_Init(&NVIC_InitStructure);                                   //根據參數初始化中斷寄存器

120 

121     NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;            //設定中斷源為PE0

122     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;    //中斷占優先級為1

123     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;            //副優先級為0

124     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                //使能中斷

125     NVIC_Init(&NVIC_InitStructure);                                   //根據參數初始化中斷寄存器

126 }

127 

128 

129 /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

130 ** 函數名稱: EXTI15_10_IRQHandler

131 ** 功能描述: 中斷15_10入口函數            

132 

133 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/

134 void EXTI15_10_IRQHandler(void)   //占空比減小

135 {

136     static uint8_t pwm_index = 0;            //用于PWM查表

137     static uint8_t period_cnt = 0;        //用于計算周期數

138     //就是上面兩個靜態變量沒有設置 ,導致一開始按鍵只能按一次,在往下按他的pwm表就不往下查表了,我想了一晚上啊。

139     //今天早晨我突然發現可能是這兩個靜態變量沒有設置,一試,果然。開心至極。2016.3.5

140     

141     if(EXTI_GetITStatus(EXTI_Line13)!= RESET)      //判斷是否發生中斷,發生則中斷標志置1

142     {

143            Delay_Ms(5);  //消抖

144 

145              period_cnt++;            

146                 

147                 TIM2->CCR1 = indexWave[pwm_index];    //根據PWM表修改定時器的比較寄存器值

148                 pwm_index++;                                                //標志PWM表的下一個元素

149             

[1] [2]
關鍵字:stm32  電調  帶動電機  按鍵調速 引用地址:stm32通過電調帶動電機(可按鍵調速)

上一篇:STM32過濾器的作用
下一篇:對GPIO_Init(GPIOx,&GPIO_InitStructure)的理解

推薦閱讀

在今年10月份,速騰聚創通過媒體對外公布了固態激光雷達MEMS(微機電系統)和 OPA (相控陣)固態激光雷達最新的研發進展,并預告MEMS固態激光雷達將在2018年1月在美國拉斯維加斯國際消費電子展(CES)上進行正式面向全球公眾實時演示。?本次CES可謂是“全球未來汽車展”。其中自動駕駛的上游零部件頂級廠商將悉數登臺亮相黑科技。作為“自動駕駛咽喉傳感器”...
中國汽車初創企業 Byton,將在下周舉行的拉斯維加斯消費電子展(CES 2019)期間,推出一款非常酷炫的產品。 如果近期的一條預告有暗示的話,那它在徹底取消機械式儀表盤的同時,將把屏幕進一步延伸、甚至連方向盤上都加裝了一塊。 從圖片來看,方向盤的中間組件,明顯分成了兩個部分 —— 上邊屏幕,下邊安全氣囊。 (配圖來自:Byton) 去年的時候,...
自2013年以來,我國機器人產業持續高速增長,即便經歷2018年的回調,目前仍是全球最大的機器人市場。而隨著5G、物聯網、人工智能等新技術的持續引進,以及全國自上而下的智能制造轉型升級,機器人產業仍將在未來很長一段時間成為我國的核心產業,力爭攻下制造業的這顆皇冠明珠。不過發展中我們也需認識到與行業先進水平的差距。目前機器人的先進制造水平還...
自動駕駛,應該說是“輔助駕駛”汽車,面對一些龐然大物視而不見的案例屢見不鮮。12 月 12 日晚,一輛特斯拉 Model S 突然失控,在北京一小區內以 80km/h 速度鉆入居民樓。大貨車、建筑物……未來,我們拿什么保證自動駕駛的安全? 龐大物體反而是“高級輔助駕駛”的克星誰可能成為救星?10 月,特斯拉軟件黑客“green”爆料,在特斯拉軟件更新中...

史海拾趣

問答坊 | AI 解惑

變頻電源的作用以及選型方案

變頻電源簡介: 變頻電源采用先進的正弦波脈寬調制(SPWM)IGBT高頻逆變技術,內部為AC—DC—AC結構,徹底清除電網干擾,輸出波形純凈,具有穩壓、穩頻范圍寬,精度高,重量輕,體積小,輸出帶有隔離變壓器等特點,可與發電機良好配合構成高品質的 ...…

查看全部問答∨

模擬必須繼續“暗煉”,阻抗類小問題照樣陰溝翻船

最近做一些信號取樣的電路,懶惰直接把以往自己做的參數COPY,也沒看看自己用的運放和AD,結果鬧出了不少笑話,不過細細想來這也是好事,畢竟在另一個側面考慮告訴自己在設計時一定要注意每一個細節。僅以此次幫忙做一個電池系統大功率0-65V電壓差動 ...…

查看全部問答∨

成家立業--------------單片機勵志篇

撥出插頭,電烙鐵慢慢涼了下來,即使你沒有戴金絲邊眼鏡,在下面的操作過程中也可以顯得更斯文一些。這是只與鍵盤、鼠標、顯示器有關的故事情節,幾片灰白顏色的軟件窗口,嘟嘟的提示音,還有期盼成功并始終專注的眼神。其實我們完成了大部分內容, ...…

查看全部問答∨

【labview】chinese 高級 Design Pattern - Producer Consumer

【labview】Design Pattern - Producer Consumer chinese 高級 [ 本帖最后由 安_然 于 2010-5-24 15:53 編輯 ]…

查看全部問答∨

Iimage顯示圖像

    因為Iimage直接顯示效率不高,而且不能做動態效果。所以想先draw到一塊內存設備環境(與開發板顯示環境一樣)上,然后再bitblt到桌面dc 。這樣可以省去顏色位數轉換的時間(只是顯示的時候省掉,始終是要轉換的),于是用了以下代碼 ...…

查看全部問答∨

幾個符號

請問一下,這兩個符號是什么意思“A”和A\',它們和A有什么關系…

查看全部問答∨

Windows設備驅動

王老師:       經過了近20天對MSDN中設備驅動相關知識的閱讀,我對Windows平臺上的設備驅動有了一定的認識, 我想嘗試著寫一個簡單的驅動,請問我應該用什么工具編寫代碼呢?       前些時間你說過, ...…

查看全部問答∨

如何獲取cellid

查了差網上的資料,不外乎有兩種途徑:分析虛擬內存或是用微軟的ril庫。 這兩者都不具有可移植性,不具有普遍性。請位各位專家還有沒有第三種方案?…

查看全部問答∨

verilog 循環要如何寫才能通過綜合編譯?

有如下程序for(count=0;count<=254;count=count+1)  begin       while(n<16)   begin    for(j=0;j<3;j=j+1)      begin       FD[n] <= fro ...…

查看全部問答∨

ADI揭秘跟帖嘿嘿

看大家對ADI談論的這么熱鬧,我也來湊湊熱鬧吧,網上查到的一些ADI的資料分享給大家   亞德諾半導體技術有限公司 Analog Device Inc 亞德諾半導體技術公司(Analog Devices, Inc. 紐約證券交易所代碼:ADI)自從1965年創建以來到2005年 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 宽城| 和政县| 伊宁市| 左权县| 滨海县| 乡城县| 宜兰县| 南宫市| 上林县| 大港区| 宁河县| 都江堰市| 沙河市| 宝鸡市| 冕宁县| 建瓯市| 辉县市| 灯塔市| 宁蒗| 金沙县| 平顶山市| 南安市| 栾城县| 改则县| 湖北省| 景宁| 临武县| 图片| 阳高县| 隆化县| 岳普湖县| 临夏市| 陆川县| 新余市| 巴林右旗| 环江| 海丰县| 新沂市| 湟源县| 南丰县| 阿坝|