完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include"main.h"
const uint32_t SEG_SegPins[]= { GPIO_PIN_0,GPIO_PIN_1,GPIO_PIN_2,GPIO_PIN_3,GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6,GPIO_PIN_7, }; const uint32_t SEG_DigPins[]= { GPIO_PIN_8,GPIO_PIN_9,GPIO_PIN_10,GPIO_PIN_11, }; void Seg_Init(void); void Seg_DisplaySingleDigit(uint8_t n); void Seg_DynamicScan(uint8_t n1,uint8_t n2,uint8_t n3,uint8_t n4); int main(void) { uint32_t tsStart; uint32_t counter=0; uint8_t n1,n2,n3,n4; HAL_Init(); Seg_Init(); while(1) { tsStart=HAL_Gettick(); n1=(counter/1000)%10; n2=(counter/100)%10; n3=(counter/10)%10; n4=counter%10; while(HAL_GetTick()-tsStart >=1000) { Seg_DynamicScan(n1,n2,n3,n4); } counter++; } } void Seg_Init(void) { GPIO_InitTypeDef gpioinit; uint32_t i; //1.初始化数码管的段选引脚 gpioinit.Mode=GPIO_MODE_OUTPUT_PP; gpioinit.Speed=GPIO_SPEED_FREQ_LOW; __HAL_RCC_GPIOA_CLK_ENABLE(); for(i=0;i<8;i++) { gpioinit.Pin=SEG_SegPins[i]; HAL_GPIO_WritePin(GPIOA,SEG_SegPins[i],GPIO_PIN_RESET); HAL_GPIO_Init(GPIOA, gpioinit); } //2.初始化数码管的位选引脚 gpioinit.Mode=GPIO_MODE_OUTPUT_PP; gpioinit.Speed=GPIO_SPEED_FREQ_LOW; __HAL_RCC_GPIOA_CLK_ENABLE(); for(i=0;i<4;i++) { gpioinit.Pin=SEG_DigPins[i]; HAL_GPIO_WritePin(GPIOA,SEG_DigPins[i],GPIO_PIN_SET); HAL_GPIO_Init(GPIOA, gpioinit); } } void Seg_DisplaySingleDigit(uint8_t n) { const uint8_t font[]= { 0x3f,0x06,0x5B,0x4F,0x66,0x6D,0X7D,0X07,0X7F,0X6F }; uint32_t i; for(i=0;i<8;i++) { if((font[n] (0x1 << i))!=0) { HAL_GPIO_WritePin(GPIOA,SEG_SegPins [i],GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOA,SEG_SegPins [i],GPIO_PIN_RESET); } } } void Seg_DynamicScan(uint8_t n1,uint8_t n2,uint8_t n3,uint8_t n4) { uint32_t i, j; uint8_t numbers[4]; numbers[0]=n1; numbers[1]=n2; numbers[2]=n3; numbers[3]=n4; for(i=0;i<4;i++) { for(j=0;j<4;j++) { HAL_GPIO_WritePin(GPIOA,SEG_DigPins[j],GPIO_PIN_SET); } Seg_DisplaySingleDigit(numbers[i]); HAL_GPIO_WritePin(GPIOA,SEG_DigPins[i],GPIO_PIN_RESET); HAL_Delay(10); } } |
|
相关推荐
2个回答
|
|
可以挂着示波器单独调试一下,看看问题出在哪里
|
|
|
|
可能是以下几个方面的问题导致没有反应:
1. 硬件接线问题:检查数码管的引脚是否正确连接,并确保连接正常。 2. 初始化问题:在代码中有一个Seg_Init函数,可能需要调用该函数来初始化GPIO引脚。确保已经正确调用了Seg_Init函数。 3. 时钟使能问题:检查是否已经使能了GPIO端口的时钟。可以找到对应的时钟使能函数,并确保已正确调用。 4. 跳线帽问题:对于一些开发板,可能需要设置跳线帽来选择GPIO引脚的连接方式。检查开发板上的跳线帽设置是否正确。 5. 动态扫描问题:检查Seg_DynamicScan函数的实现,确保正确扫描数码管并显示数字。可能需要考虑定时器的配置来实现动态扫描。 通过逐一检查这些可能的问题,你应该能够找到导致没有反应的具体原因。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
648浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
517浏览 3评论
534浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 16:09 , Processed in 0.856109 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号