GD32F103C8T6直接驱动数码管测试

32系列芯片的IO很多,驱动电流也足,完全可以直接驱动LED数码管。所以总想有空可以测试一下。

为了方便测试,本人把四位共阴数码管的SEG0至SEG7分别串联一个1K电阻接到PB0至PB7,位选择COM0至COM3接到PB8至PB11。线路的驳接使用了面包板和杜邦线。

STM32的HAL库推出后,得到用户的广泛应用,但HAL库找不到直接给同一系列的IO进行赋值,就像51单片机一样,所以只能通过最原始的方法----操作寄存器来对PB口进行赋值。其实,也不复杂,就只需一句:

#define GPIOB_OUT(x) GPIOB->ODR = x; // GPIOB端口输出 X

然后自己再写一个显示函数:

void ShowLed(uint8_t d1,uint8_t d2,uint8_t d3,uint8_t d4,uint8_t h)

其中d1至d4为显示数据,h为小数点的位序。

 

数码管的显示编码如下: 

uint8_t const LEDCODE[]={
 0x3F,/*0*/
 0x06,/*1*/
 0x5B,/*2*/
 0x4F,/*3*/
 0x66,/*4*/
 0x6D,/*5*/
 0x7D,/*6*/
 0x07,/*7*/
 0x7F,/*8*/
 0x6F,/*9*/
 0x77,/*A*/
 0x7C,/*b*/
 0x58,/*c*/
 0x5E,/*d*/
 0x79,/*E*/
 0x71,/*F*/
 0x74,/*h*/
 0x38,/*L*/
 0x54,/*n*/
 0x5C,/*o*/
 0x73,/*P*/
 0x50,/*r*/
 0x78,/*t*/
 0x3E,/*U*/
 0x40,/*-*/
​
};
另外,为了计时,还需要编写TIM2中断回调函数void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
测试效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值