关于stm32直接I/O口操作驱动4位数码管0到9999显示的问题
要昵称干嘛 2017-12-12 11:15:09 我的main函数里是
while(1)
{
j=1;
digitron_put_buf(DIGITRON_0, j % 10);
digitron_put_buf(DIGITRON_1, j / 10 % 10);
digitron_put_buf(DIGITRON_2, j / 100 % 10);
digitron_put_buf(DIGITRON_3, j / 1000 % 10);
digitron_dynamic_display();
}
(中间程序省略。。。。。。。。。。。)
选择数码管
static void digitron_select(enum DIGITRON numb)
{
unsigned char n;
for(n = 0; n < NUM_DIGITRONS; n++) /**< 关闭所有数码管 */
{
HAL_GPIO_WritePin(digitron[n].port, digitron[n].pin, GPIO_PIN_RESET);
}
if(numb != DIGITRON_NULL)
{
HAL_GPIO_WritePin(digitron[numb].port, digitron[numb].pin, GPIO_PIN_SET); /**< 点亮数码管 */
}
显示数字
static void digitron_data(unsigned char dat)
{
led_on(DIGITRON_MAP[dat]);
}
调试的时候有个警告,
..\..\src\digitron.c(94): warning: #223-D: function "led_on" declared implicitly
led_on(DIGITRON_MAP[dat]);
数码管显示第一回合是对的 0 0 0 1,按理说应该是一直在0 0 0 1 的,但第一回合后就一直是 0 0 0 0 了,还有赋值其他数时都显示不对,但串口打印是对的。
求大神帮忙找找问题