完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
驱动方式为A-AB-B-BC-C-CD-D-DA-A 使用延时函数实现 主函数 #include "dj.h" #include "delay.h" #include "sys.h" #include "key_led.h" //ALIENTEK miniSTM32¿ª·¢°åʵÑé1 //ÅÜÂíµÆʵÑé //¼¼ÊõÖ§³Ö£ºwww.openedv.com //¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ int main() { int i=512; //ÕâÀïתһȦÐèÒª4096¸öÂö³åÐźŠתһȦiÉèÖÃΪ512 u32 t=550; //¼ÆËãµÃ305Ϊ10sµÄʱ¼ä£¬ÕâÀïÓÐ1sµÄÎó²î£¬¹Ê¼õÈ¥ÁË1sµÄʱ¼ä // 1s¼ÆËãµÃµ½ËùÐèÑÓʱΪ30 305-30=275 //´ËÍ⣬¼ÆËãÁË5sËùÐèµÄÑÓʱ£¬275/2=137.5 È¡137 ²âµÃʱ¼äÎó²îÔÚ0.2s×óÒÔÄÚ delay_init(); //ÑÓʱº¯Êý³õʼ»¯ Dj_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú while(1) { while(i) { A1_H;B1_L;C1_L;D1_L; delay_us(t); A1_H;B1_H;C1_L;D1_L; delay_us(t); A1_L;B1_H;C1_L;D1_L; delay_us(t); A1_L;B1_H;C1_H;D1_L; delay_us(t); A1_L;B1_L;C1_H;D1_L; delay_us(t); A1_L;B1_L;C1_H;D1_H; delay_us(t); A1_L;B1_L;C1_L;D1_H; delay_us(t); A1_H;B1_L;C1_L;D1_H; delay_us(t); i--; } } } dj.c #include "stm32f10x.h" #include "sys.h" #include "dj.h" #include "delay.h" void Dj_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //LED0-->PA.8 ¶Ë¿ÚÅäÖà GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz GPIO_ResetBits(GPIOA,GPIO_Pin_0); //PA.8 Êä³ö¸ß GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //LED1-->PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz GPIO_ResetBits(GPIOA,GPIO_Pin_1); //PD.2 Êä³ö¸ß GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz GPIO_ResetBits(GPIOA,GPIO_Pin_2); //PD.2 Êä³ö¸ß GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //LED1-->PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz GPIO_ResetBits(GPIOA,GPIO_Pin_3); //PD.2 Êä³ö¸ß GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8 } dj.h #ifndef __DJ_H #define __DJ_H #include "sys.h" // //本程序只供学习使用,未经作者许可,不得用于其它任何用途 //ALIENTEK miniSTM32开发板 //按键驱动代码 //正点原子@ALIENTEK //技术论坛:www.openedv.com //修改日期:2012/9/3 //版本:V1.0 //版权所有,盗版必究。 //Copyright(C) 广州市星翼电子科技有限公司 2009-2019 //All rights reserved // #define A1_H GPIO_SetBits(GPIOA,GPIO_Pin_0) #define A1_L GPIO_ResetBits(GPIOA,GPIO_Pin_0) #define B1_H GPIO_SetBits(GPIOA,GPIO_Pin_1) #define B1_L GPIO_ResetBits(GPIOA,GPIO_Pin_1) #define C1_H GPIO_SetBits(GPIOA,GPIO_Pin_2) #define C1_L GPIO_ResetBits(GPIOA,GPIO_Pin_2) #define D1_H GPIO_SetBits(GPIOA,GPIO_Pin_3) #define D1_L GPIO_ResetBits(GPIOA,GPIO_Pin_3) /*电机转动指令*/ /* #define a {A1_H,B1_L,C1_L,D1_L} #define b {A1_H,B1_H,C1_L,D1_L} #define c {A1_l,B1_H,C1_L,D1_L} #define d {A1_L,B1_H,C1_H,D1_L} #define e {A1_L,B1_L,C1_H,D1_L} #define f {A1_L,B1_L,C1_H,D1_H} #define g {A1_L,B1_L,C1_L,D1_H} #define h {A1_H,B1_L,C1_L,D1_H} */ void Dj_Init(void); //IO初始化 #endif |
|
|
|
只有小组成员才能发言,加入小组>>
2237 浏览 0 评论
8152 浏览 4 评论
35907 浏览 18 评论
4857 浏览 0 评论
23512 浏览 34 评论
1042浏览 2评论
1298浏览 1评论
1562浏览 1评论
1127浏览 0评论
1570浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-8 13:15 , Processed in 1.326549 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191