找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2482|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32控制步進(jìn)電機(jī) 源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:297382 發(fā)表于 2020-9-17 09:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include "stm32f10x.h"
  2. #include "stm32f10x_rcc.h"
  3. #include "misc.h"

  4. void RCC_Configuration(void);
  5. void GPIO_Configuration(void);
  6. void ZhengZhuan(u16 tt);
  7. void FanZhuan(u16 tt);
  8. void delay_ms(u16 nms);

  9. /****************************************************************************
  10. * 名    稱:int main(void)
  11. * 功    能:主函數(shù)
  12. * 入口參數(shù):無(wú)
  13. * 出口參數(shù):無(wú)
  14. * 說(shuō)    明:
  15. * 調(diào)用方法:無(wú)
  16. ****************************************************************************/
  17. int main(void)
  18. {
  19.   RCC_Configuration();        //系統(tǒng)時(shí)鐘設(shè)置及外設(shè)時(shí)鐘使能                  
  20.   GPIO_Configuration();

  21.   while (1)
  22.   {       
  23.           //讀取PC5管腳的輸入狀態(tài)         K1  
  24.         if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5) == Bit_RESET)
  25.         {
  26.                 ZhengZhuan(5);//高速
  27.         }

  28.         //讀取PC5管腳的輸入狀態(tài)           K2
  29.         if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1) == Bit_RESET)
  30.         {
  31.                 FanZhuan(5);//高速
  32.         }       

  33.         //讀取PC2管腳的輸入狀態(tài)            K3
  34.         if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2) == Bit_RESET)
  35.         {
  36.                 ZhengZhuan(10);//低速
  37.         }

  38.         //讀取PC3管腳的輸入狀態(tài)            K4
  39.         if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_3) == Bit_RESET)
  40.         {
  41.                 FanZhuan(10);//低速
  42.         }

  43.           GPIO_ResetBits(GPIOD, GPIO_Pin_3);
  44.           GPIO_ResetBits(GPIOD, GPIO_Pin_6);
  45.           GPIO_ResetBits(GPIOD, GPIO_Pin_12);
  46.           GPIO_ResetBits(GPIOE, GPIO_Pin_4);
  47.   }
  48. }

  49. /****************************************************************************
  50. * 名    稱:void RCC_Configuration(void)
  51. * 功    能:系統(tǒng)時(shí)鐘配置為72MHZ, 外設(shè)時(shí)鐘配置
  52. * 入口參數(shù):無(wú)
  53. * 出口參數(shù):無(wú)
  54. * 說(shuō)    明:
  55. * 調(diào)用方法:無(wú)
  56. ****************************************************************************/
  57. void RCC_Configuration(void)
  58. {
  59.   SystemInit();
  60.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE , ENABLE);
  61. }

  62. /****************************************************************************
  63. * 名    稱:void GPIO_Configuration(void)
  64. * 功    能:LED控制口線及鍵盤設(shè)置
  65. * 入口參數(shù):無(wú)
  66. * 出口參數(shù):無(wú)
  67. * 說(shuō)    明:
  68. * 調(diào)用方法:無(wú)
  69. ****************************************************************************/
  70. void GPIO_Configuration(void)
  71. {
  72.   GPIO_InitTypeDef GPIO_InitStructure;                                //端口配置結(jié)構(gòu)體

  73.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                        //PD3管腳
  74.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  75.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  76.   GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口       

  77.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                        //PD6管腳
  78.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  79.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  80.   GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口       

  81.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;                //PD12管腳
  82.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  83.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  84.   GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口       

  85.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                        //PE4管腳
  86.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  87.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  88.   GPIO_Init(GPIOE, &GPIO_InitStructure);                        //初始化端口       


  89.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                        //PC5管腳
  90.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //輸入上拉
  91.   GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口

  92.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                        //PC1管腳
  93.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //輸入上拉
  94.   GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口

  95.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                        //PC2管腳
  96.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //輸入上拉
  97.   GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口

  98.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                        //PC3管腳
  99.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //輸入上拉
  100.   GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口
  101. }
  102. //電機(jī)正轉(zhuǎn)函數(shù)
  103. void ZhengZhuan(u16 tt)
  104. {
  105.             //1100
  106.           GPIO_SetBits(GPIOD, GPIO_Pin_3);
  107.           GPIO_SetBits(GPIOD, GPIO_Pin_6);
  108.           GPIO_ResetBits(GPIOD, GPIO_Pin_12);
  109.           GPIO_ResetBits(GPIOE, GPIO_Pin_4);
  110.           delay_ms(tt);
  111.           //0110  
  112.           GPIO_ResetBits(GPIOD, GPIO_Pin_3);
  113.           GPIO_SetBits(GPIOD, GPIO_Pin_6);
  114.           GPIO_SetBits(GPIOD, GPIO_Pin_12);
  115.           GPIO_ResetBits(GPIOE, GPIO_Pin_4);
  116.           delay_ms(tt);
  117.           //0011
  118.           GPIO_ResetBits(GPIOD, GPIO_Pin_3);
  119.           GPIO_ResetBits(GPIOD, GPIO_Pin_6);
  120.           GPIO_SetBits(GPIOD, GPIO_Pin_12);
  121.           GPIO_SetBits(GPIOE, GPIO_Pin_4);
  122.           delay_ms(tt);
  123.           //1001          
  124.           GPIO_SetBits(GPIOD, GPIO_Pin_3);
  125.           GPIO_ResetBits(GPIOD, GPIO_Pin_6);
  126.           GPIO_ResetBits(GPIOD, GPIO_Pin_12);
  127.           GPIO_SetBits(GPIOE, GPIO_Pin_4);
  128.           delay_ms(tt);
  129. }
  130. //電機(jī)反轉(zhuǎn)函數(shù)
  131. void FanZhuan(u16 tt)
  132. {
  133.           //1001          
  134.           GPIO_SetBits(GPIOD, GPIO_Pin_3);
  135.           GPIO_ResetBits(GPIOD, GPIO_Pin_6);
  136.           GPIO_ResetBits(GPIOD, GPIO_Pin_12);
  137.           GPIO_SetBits(GPIOE, GPIO_Pin_4);
  138.           delay_ms(tt);
  139.           //0011
  140.           GPIO_ResetBits(GPIOD, GPIO_Pin_3);
  141.           GPIO_ResetBits(GPIOD, GPIO_Pin_6);
  142.           GPIO_SetBits(GPIOD, GPIO_Pin_12);
  143.           GPIO_SetBits(GPIOE, GPIO_Pin_4);
  144.           delay_ms(tt);          
  145.           //0110
  146.           GPIO_ResetBits(GPIOD, GPIO_Pin_3);
  147.           GPIO_SetBits(GPIOD, GPIO_Pin_6);
  148.           GPIO_SetBits(GPIOD, GPIO_Pin_12);
  149.           GPIO_ResetBits(GPIOE, GPIO_Pin_4);
  150.           delay_ms(tt);
  151.           //1100
  152.           GPIO_SetBits(GPIOD, GPIO_Pin_3);
  153.           GPIO_SetBits(GPIOD, GPIO_Pin_6);
  154.           GPIO_ResetBits(GPIOD, GPIO_Pin_12);
  155.           GPIO_ResetBits(GPIOE, GPIO_Pin_4);
  156.           delay_ms(tt);          
  157. }

  158. void delay_ms(u16 nms)
  159. {
  160.          u32 temp;
  161.          SysTick->LOAD = 9000*nms;
  162.          SysTick->VAL=0X00;//清空計(jì)數(shù)器
  163.          SysTick->CTRL=0X01;//使能,減到零是無(wú)動(dòng)作,采用外部時(shí)鐘源
  164.          do
  165.          {
  166.           temp=SysTick->CTRL;//讀取當(dāng)前倒計(jì)數(shù)值
  167.          }while((temp&0x01)&&(!(temp&(1<<16))));//等待時(shí)間到達(dá)
  168.          SysTick->CTRL=0x00; //關(guān)閉計(jì)數(shù)器
  169.          SysTick->VAL =0X00; //清空計(jì)數(shù)器
  170. }
復(fù)制代碼


STM32控制步進(jìn)電機(jī).rar

270.23 KB, 下載次數(shù): 43, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:328014 發(fā)表于 2020-9-17 15:59 | 只看該作者
能分享一下源程序嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表