完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
请问主函数该怎么操作,求各路大神
|
|
相关推荐
32个回答
|
|
我是初学者,麻烦各位高手帮帮忙
|
|
|
|
看看{:20:}{:20:}{:20:}{:20:}
|
|
|
|
先将HC595函数写好,写好后直接调用,HC595的三个信号要接到你的IO口上,然后你的LED灯也要接到你的IO口上,
需要写的函数有:GPIO_init(),HC595_init(),systick定时,然后你可以在mail写HC595发送数据函数 评分
|
||
|
||
LZ很好.赞一个额
|
|
|
|
下载文件里缺少调用的595文件
|
|
|
|
级联的话,发送数据发16位,没有级联的话两个分别发8位。
|
|
|
|
#include "drivehc595.h"
#include "delay.h" //***************************************** /*µãÁÁ¶ÔÓ¦µÆ*/ void Drive_Hc595(u32 dat_status, u16 ledstatus) { u32 i,tmp32; u16 tmp16; RCK_L(); for(i=0;i<32;i++) { SCK_L(); Delay(0x10); tmp32 = (dat_status & 0x80000000); if(tmp32) { DAT_OUT_H(); } else { DAT_OUT_L(); } Delay(0x10); SCK_H(); Delay(0x10); dat_status <<= 1; } Delay(0x10); for(i=0;i<16;i++) { SCK_L(); Delay(0x10); tmp16 = (ledstatus & 0x8000); if(tmp16) { DAT_OUT_H(); } else { DAT_OUT_L(); } Delay(0x10); SCK_H(); Delay(0x10); ledstatus <<= 1; } Delay(0x10); RCK_H(); Delay(0x10); SCK_L(); RCK_L(); DAT_OUT_L(); } // Çý¶¯HC595µÄ¹Ü½Å³õʼ»¯ void Init_HC595_GPIO(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_GPIO_HC595, ENABLE); /*ʹÄÜHC595ʹÓõÄGPIOʱÖÓ*/ GPIO_InitStructure.GPIO_Pin = DAT_PIN | SCK_PIN | RCK_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIO_HC595_PORT, &GPIO_InitStructure); RCK_L(); SCK_L(); DAT_OUT_L(); } //////////// #ifndef __DRIVEHC595_H #define __DRIVEHC595_H #include "sys.h" //////////////////////////////////////////////////////// #define RCC_GPIO_HC595 RCC_APB2Periph_GPIOF //HC595ʹÓõÄGPIOʱÖÓ #define GPIO_HC595_PORT GPIOF // HC595 Çý¶¯Òý½ÅËùÔÚµÄ¶Ë¿Ú #define SCK_PIN GPIO_Pin_13 //HC595 ÒÆλÐźÅÒý½Å #define pinSCK PIN13 #define RCK_PIN GPIO_Pin_12 //HC595 Ëø´æÐźÅÒý½Å #define pinRCK PIN12 #define DAT_PIN GPIO_Pin_11 //HC595 Êý¾ÝÐźÅÒý½Å #define pinDAT PIN11 //////////////////////////////////////////////////////// #define SCK_H() PFout(pinSCK)=1 #define SCK_L() PFout(pinSCK)=0 #define SCK_XOR() PFout(pinSCK)=!PFout(pinSCK) #define RCK_H() PFout(pinRCK)=1 #define RCK_L() PFout(pinRCK)=0 #define RCK_XOR() PFout(pinRCK)=!PFout(pinRCK) #define DAT_OUT_H() PFout(pinDAT)=1 #define DAT_OUT_L() PFout(pinDAT)=0 //////////////////////////////////////////////////////// void Drive_Hc595(u32 dat_status, u16 ledstatus); void Init_HC595_GPIO(void); #endif ////////////////// #ifndef __SYS_H #define __SYS_H #include "stm32f10x.h" ////////////////////////////////////////////////////////////////////////////////// typedef enum { FALSE = 0, TRUE , }BOOL; typedef enum { OFF = 0, ON , }ONorOFF; typedef enum{ MODE_INPUT = 0x0, MODE_OUT_10MHz = 0x01, MODE_OUT_2MHz = 0x02, MODE_OUT_50MHz = 0x03, }IOMode; typedef enum{ ANALOG_INPUT = 0x00, FLOATING_INPUT = 0x04, UP_DOWN_INPUT = 0x08, REVERSE_INPUT = 0x0c, }InputMode_InMode; typedef enum{ PP_OUTPUT = 0, OD_OUTPUT = 0x04, AFIO_PP_OUTPUT = 0x08, AFIO_OD_OUTPUT = 0x0c, }OutputMode_OutMode; ////////////////////////////////////////////////////////////////////////////////// #define PIN0 0 #define PIN1 1 #define PIN2 2 #define PIN3 3 #define PIN4 4 #define PIN5 5 #define PIN6 6 #define PIN7 7 #define PIN8 8 #define PIN9 9 #define PIN10 10 #define PIN11 11 #define PIN12 12 #define PIN13 13 #define PIN14 14 #define PIN15 15 ////////////////////////////////////////////////////////////////////////////////// #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) #define MEM_ADDR(addr) *((volatile unsigned long *)(addr)) #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum)) //IO¿ÚµØÖ·Ó³Éä #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C #define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808 #define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08 #define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008 #define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408 #define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808 #define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08 #define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08 ////////////////////////////////////////////////////////////////// //IO¿Ú²Ù×÷,Ö»¶Ôµ¥Ò»µÄIO¿Ú! //È·±£nµÄֵСÓÚ16! #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //Êä³ö #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //ÊäÈë #define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //Êä³ö #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //ÊäÈë #define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //Êä³ö #define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //ÊäÈë #define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //Êä³ö #define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //ÊäÈë #define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //Êä³ö #define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //ÊäÈë #define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //Êä³ö #define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //ÊäÈë #define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //Êä³ö #define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //ÊäÈë #endif 评分
|
||
1 条评论
|
||
不好意思,上面的那个是6个字节串连输出的,2个字节的话,把 for(i=0;i<32;i++) 这段去掉即可
|
|
|
|
级联而已,搞定一个就能搞定两个
|
|
|
|
感谢,学习中。。。。。。。。。。。。。。。。
|
|
|
|
我等着用,顶起
|
|
|
|
感谢,学习中。谢谢~!
|
|
|
|
非常有用,多谢
|
|
|
|
|
|
|
|
猴赛雷,谢谢楼主分享,好人有好报,也希望我们这个论坛越来越多爱分享的人,越来越多好人,越来越多高素质人才
|
|
|
|
|
|
|
|
楼主辛苦了,感谢分享
|
|
|
|
还差文件的吧?
|
|
|
|
还差文件的吧?
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2005 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1858 浏览 3 评论
4442 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2007 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2513 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 07:00 , Processed in 1.112830 second(s), Total 120, Slave 102 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号