久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32F103 倍頻 72M 8路舵機控制源碼
[打印本頁]
作者:
clowner
時間:
2018-6-30 18:14
標題:
STM32F103 倍頻 72M 8路舵機控制源碼
做的一個舵機,很棒,用處很大
單片機源程序如下:
/*
單片機:STM32F103RCT6/STM32F103C8T6 倍頻 72M 8路舵機控制
舵機IO PA0~PA3 PB3~PB6
*/
#include "stm32f10x_conf.h"
#define tb_interrupt_open() {__enable_irq();} //總中斷打開
void rcc_init(void); //主頻設置
void delay_ms(unsigned int t); //毫秒級別延時
void dj_io_init(void); //舵機 IO 口初始化
void dj_io_set(u8 index, u8 level); //舵機 IO 口高低電平設置
void TIM2_Int_Init(u16 arr,u16 psc);//舵機 定時器初始化
void gpioA_pin_set(unsigned char pin, unsigned char level);
void gpioB_pin_set(unsigned char pin, unsigned char level);
//舵機脈沖數組
int duoji_pulse[8] = {1500,1500,1500,1500,1500,1500,1500,1500} , i;
int main(void) {
rcc_init();
dj_io_init();
TIM2_Int_Init(20000,71);
tb_interrupt_open();
while(1) {
for(i=0;i<8;i++) {
duoji_pulse[i] = 1000;//循環把8個舵機位置設定到1000
}
delay_ms(1000);
for(i=0;i<8;i++) {
duoji_pulse[i] = 2000;//循環把8個舵機位置設定到2000
}
delay_ms(1000);
}
}
void rcc_init(void) {
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
while(HSEStartUpStatus == ERROR);
RCC_HCLKConfig(RCC_SYSCLK_Div1);//SYSCLK
RCC_PCLK1Config(RCC_HCLK_Div2);//APB1 MAX = 36M
RCC_PCLK2Config(RCC_HCLK_Div1);//APB2 MAX = 72M
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08);
}
void delay_ms(unsigned int t) {
int t1;
while(t--) {
t1 = 7200;
while(t1--);
}
}
void dj_io_init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void dj_io_set(u8 index, u8 level) {
switch(index) {
case 0:gpioA_pin_set(0, level);break;
case 1:gpioA_pin_set(1, level);break;
case 2:gpioA_pin_set(2, level);break;
case 3:gpioA_pin_set(3, level);break;
case 4:gpioB_pin_set(3, level);break;
case 5:gpioB_pin_set(4, level);break;
case 6:gpioB_pin_set(5, level);break;
case 7:gpioB_pin_set(6, level);break;
default:break;
}
}
void gpioA_pin_set(unsigned char pin, unsigned char level) {
if(level) {
GPIO_SetBits(GPIOA,1 << pin);
} else {
GPIO_ResetBits(GPIOA,1 << pin);
}
}
void gpioB_pin_set(unsigned char pin, unsigned char level) {
if(level) {
GPIO_SetBits(GPIOB,1 << pin);
} else {
GPIO_ResetBits(GPIOB,1 << pin);
}
}
void TIM2_Int_Init(u16 arr,u16 psc) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //①時鐘 TIM2 使能
//定時器 TIM2 初始化
TIM_TimeBaseStructure.TIM_Period = arr; //設置自動重裝載寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置時鐘頻率除數的預分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM 向上計數
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //②初始化 TIM2
TIM_ARRPreloadConfig(TIM2, DISABLE);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); //③允許更新中斷
//中斷優先級 NVIC 設置
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM2 中斷
//NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0000);
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占優先級 0 級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //從優先級 2 級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道被使能
NVIC_Init(&NVIC_InitStructure); //④初始化 NVIC 寄存器
TIM_Cmd(TIM2, ENABLE); //⑤使能 TIM2
}
void TIM2_IRQHandler(void) {
static u8 flag = 0;
static u8 duoji_index1 = 0;
int temp;
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //檢查 TIM2 更新中斷發生與否
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); //清除 TIM2 更新中斷標志
if(duoji_index1 == 8) {
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
32單個舵機控制源碼.rar
(1.22 MB, 下載次數: 36)
2018-6-30 18:17 上傳
點擊文件名下載附件
32的舵機
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
自拍偷拍一区二区三区
|
99久久综合
|
久久手机视频
|
97精品国产97久久久久久免费
|
黄色片免费网站
|
色资源在线
|
亚洲爱爱网
|
欧美美女视频
|
97人人爱
|
欧美人与性动交α欧美精品
|
色一情一乱一乱一区91av
|
www.久久久久久
|
av小说在线观看
|
日韩性视频
|
日本三级久久
|
国产乱国产乱300精品
|
黄色一级网站
|
日日拍夜夜拍
|
日韩在线观看一区
|
一级黄色片视频
|
亚洲福利网
|
国内精品视频在线观看
|
国产一级片免费
|
日韩精品免费视频
|
九九热在线精品
|
日韩av在线免费看
|
欧美成人一级片
|
亚洲欧美另类图片
|
xxxx性欧美
|
法国极品成人h版
|
国产一级在线视频
|
日日爱视频
|
国产欧美精品一区二区
|
国产中文字幕视频
|
丁香婷婷激情
|
欧美综合久久
|
午夜影院在线观看视频
|
亚洲天天操
|
欧美国产在线观看
|
久久亚洲成人
|
亚洲精彩视频
|