关于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 了,还有赋值其他数时都显示不对,但串口打印是对的。
求大神帮忙找找问题


...全文
4206 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
要昵称干嘛 2017-12-14
  • 打赏
  • 举报
回复
引用 3 楼 91program 的回复:
[quote=引用 2 楼 qq_40557957 的回复:] 已解决。。。。。
LZ 能说一下怎么解决的吗?[/quote]就是在led_on之前没有关闭led,我加了个led_off,至于警告,我在h文件里再次声明了一下就行了,
91program 2017-12-14
  • 打赏
  • 举报
回复
引用 2 楼 qq_40557957 的回复:
已解决。。。。。
LZ 能说一下怎么解决的吗?
要昵称干嘛 2017-12-14
  • 打赏
  • 举报
回复
已解决。。。。。
要昵称干嘛 2017-12-12
  • 打赏
  • 举报
回复
内容概要:本文提出了一种基于粒子群优化算法(PSO)的风光储能微电网日前经济调度模型,创新性地引入需求响应机制,以实现系统运行成本最小化为目标。该模型综合考虑风力发电、光伏发电、储能系统及可调节负荷的运行特性,构建了包含电力供需平衡、设备出力能力、储能容量约束在内的完整数学模型,并通过Python编程实现PSO算法求解,有效提升了新能源消纳水平并降低了购电成本与运行费用。研究不仅实现了多能源协调优化调度,还为高比例可再生能源接入背景下的微电网经济运行提供了可行的技术路径。; 适合人群:具备一定电力系统基础知识和Python编程能力的科研人员、研究生及从事新能源微电网优化调度相关工作的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源的微电网经济调度问题;②掌握粒子群算法在电力系统优化中的建模与应用方法;③开展计及需求响应的多能源协同调度仿真分析,探索用户侧灵活性资源参与系统优化的潜力。; 阅读建议:建议读者结合提供的Python代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及PSO参数设置,可进一步拓展至其他智能优化算法对比分析,或引入碳排放、电压稳定性等多目标优化维度进行深化研究。

19,523

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧