久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32F103 倍頻 72M 8路舵機控制源碼 [打印本頁]

作者: clowner    時間: 2018-6-30 18:14
標題: STM32F103 倍頻 72M 8路舵機控制源碼
做的一個舵機,很棒,用處很大

單片機源程序如下:
  1. /*
  2.         單片機:STM32F103RCT6/STM32F103C8T6  倍頻 72M 8路舵機控制
  3.         舵機IO PA0~PA3 PB3~PB6
  4. */
  5. #include "stm32f10x_conf.h"
  6. #define tb_interrupt_open() {__enable_irq();}        //總中斷打開
  7. void rcc_init(void);                                                        //主頻設置
  8. void delay_ms(unsigned int t);                //毫秒級別延時
  9. void dj_io_init(void);                                //舵機 IO 口初始化
  10. void dj_io_set(u8 index, u8 level);        //舵機 IO 口高低電平設置
  11. void TIM2_Int_Init(u16 arr,u16 psc);//舵機 定時器初始化
  12. void gpioA_pin_set(unsigned char pin, unsigned char level);
  13. void gpioB_pin_set(unsigned char pin, unsigned char level);

  14. //舵機脈沖數組
  15. int duoji_pulse[8] = {1500,1500,1500,1500,1500,1500,1500,1500} , i;

  16. int main(void) {       
  17.         rcc_init();
  18.         dj_io_init();
  19.         TIM2_Int_Init(20000,71);
  20.         tb_interrupt_open();
  21.         while(1) {       
  22.                 for(i=0;i<8;i++) {
  23.                         duoji_pulse[i] = 1000;//循環把8個舵機位置設定到1000
  24.                 }
  25.                 delay_ms(1000);
  26.                 for(i=0;i<8;i++) {
  27.                         duoji_pulse[i] = 2000;//循環把8個舵機位置設定到2000
  28.                 }
  29.                 delay_ms(1000);       
  30.         }
  31. }

  32. void rcc_init(void) {
  33.         ErrorStatus HSEStartUpStatus;
  34.         RCC_DeInit();
  35.         RCC_HSEConfig(RCC_HSE_ON);
  36.         HSEStartUpStatus = RCC_WaitForHSEStartUp();
  37.         while(HSEStartUpStatus == ERROR);
  38.         RCC_HCLKConfig(RCC_SYSCLK_Div1);//SYSCLK
  39.         RCC_PCLK1Config(RCC_HCLK_Div2);//APB1  MAX = 36M
  40.         RCC_PCLK2Config(RCC_HCLK_Div1);//APB2  MAX = 72M
  41.         RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
  42.         RCC_PLLCmd(ENABLE);
  43.         while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  44.         RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  45.         while(RCC_GetSYSCLKSource() != 0x08);
  46. }


  47. void delay_ms(unsigned int t) {
  48.         int t1;
  49.         while(t--) {
  50.                 t1 = 7200;
  51.                 while(t1--);
  52.         }
  53. }
  54. void dj_io_init(void)  {
  55.         GPIO_InitTypeDef GPIO_InitStructure;       

  56.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
  57.        
  58.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
  59.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  60.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  61.         GPIO_Init(GPIOA, &GPIO_InitStructure);

  62.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6 | GPIO_Pin_14;
  63.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  64.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  65.         GPIO_Init(GPIOB, &GPIO_InitStructure);               
  66. }

  67. void dj_io_set(u8 index, u8 level) {
  68.         switch(index) {
  69.                 case 0:gpioA_pin_set(0, level);break;
  70.                 case 1:gpioA_pin_set(1, level);break;
  71.                 case 2:gpioA_pin_set(2, level);break;
  72.                 case 3:gpioA_pin_set(3, level);break;
  73.                 case 4:gpioB_pin_set(3, level);break;
  74.                 case 5:gpioB_pin_set(4, level);break;
  75.                 case 6:gpioB_pin_set(5, level);break;
  76.                 case 7:gpioB_pin_set(6, level);break;
  77.                 default:break;
  78.         }
  79. }

  80. void gpioA_pin_set(unsigned char pin, unsigned char level) {
  81.         if(level) {
  82.                 GPIO_SetBits(GPIOA,1 << pin);
  83.         } else {
  84.                 GPIO_ResetBits(GPIOA,1 << pin);
  85.         }
  86. }

  87. void gpioB_pin_set(unsigned char pin, unsigned char level) {
  88.         if(level) {
  89.                 GPIO_SetBits(GPIOB,1 << pin);
  90.         } else {
  91.                 GPIO_ResetBits(GPIOB,1 << pin);
  92.         }
  93. }


  94. void TIM2_Int_Init(u16 arr,u16 psc) {
  95.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  96.         NVIC_InitTypeDef NVIC_InitStructure;
  97.        
  98.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //①時鐘 TIM2 使能       
  99.         //定時器 TIM2 初始化
  100.         TIM_TimeBaseStructure.TIM_Period = arr; //設置自動重裝載寄存器周期的值
  101.         TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置時鐘頻率除數的預分頻值
  102.         TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割
  103.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM 向上計數
  104.         TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);  //②初始化 TIM2
  105.         TIM_ARRPreloadConfig(TIM2, DISABLE);
  106.         TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );  //③允許更新中斷
  107.        
  108.         //中斷優先級 NVIC 設置
  109.         NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM2 中斷
  110.         //NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0000);
  111.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占優先級 0 級
  112.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  //從優先級 2 級
  113.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //IRQ 通道被使能
  114.         NVIC_Init(&NVIC_InitStructure);  //④初始化 NVIC 寄存器
  115.         TIM_Cmd(TIM2, ENABLE);  //⑤使能 TIM2
  116. }

  117. void TIM2_IRQHandler(void) {
  118.         static u8 flag = 0;
  119.         static u8 duoji_index1 = 0;
  120.         int temp;
  121.         if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //檢查 TIM2 更新中斷發生與否
  122.         {
  123.                 TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); //清除 TIM2 更新中斷標志
  124.                
  125.                 if(duoji_index1 == 8) {
  126. ……………………

  127. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
32單個舵機控制源碼.rar (1.22 MB, 下載次數: 36)







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 自拍偷拍一区二区三区 | 99久久综合 | 久久手机视频 | 97精品国产97久久久久久免费 | 黄色片免费网站 | 色资源在线 | 亚洲爱爱网| 欧美美女视频 | 97人人爱 | 欧美人与性动交α欧美精品 | 色一情一乱一乱一区91av | www.久久久久久 | av小说在线观看 | 日韩性视频 | 日本三级久久 | 国产乱国产乱300精品 | 黄色一级网站 | 日日拍夜夜拍 | 日韩在线观看一区 | 一级黄色片视频 | 亚洲福利网 | 国内精品视频在线观看 | 国产一级片免费 | 日韩精品免费视频 | 九九热在线精品 | 日韩av在线免费看 | 欧美成人一级片 | 亚洲欧美另类图片 | xxxx性欧美| 法国极品成人h版 | 国产一级在线视频 | 日日爱视频 | 国产欧美精品一区二区 | 国产中文字幕视频 | 丁香婷婷激情 | 欧美综合久久 | 午夜影院在线观看视频 | 亚洲天天操 | 欧美国产在线观看 | 久久亚洲成人 | 亚洲精彩视频 |