OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9393|回复: 5

分享一个单片机系统基础文章

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2021-7-31
在线时间
2 小时
发表于 2021-7-31 19:10:32 | 显示全部楼层 |阅读模式


全国电赛在即,前些时间母校老师联系我,想让我给学弟们做下赛前培训。我做过很多年的培训,很早就发现了一个问题:同学们在为比赛做准备时,往往只注重去学习使用各种各样的传感器,自动控制算法,各种驱动。同学们只关注如何去实现功能,而忽视了如何把代码写得更好,更健壮,更易扩展和维护。如果在比赛之前,先准备好高质量的代码框架,基础模块,熟练掌握调度技巧,将极大提高赛时的开发和调试效率。

因此我写了些扎实基础的文章,和大家分享。


嵌入式基础--毫秒级定时模块
https://mp.weixin.qq.com/s/IMxqdNApaYXyvQEHziI5JQ

张三和李四谁跑的快
https://mp.weixin.qq.com/s/FSh2yOi0jM_muqZ8y4wKnQ

嵌入式基础--日志模块
https://mp.weixin.qq.com/s/bnubhKoyIIfGxyvG0G8dhw

嵌入式基础--你真的了解头文件吗
https://mp.weixin.qq.com/s/YovvEdRBkzwT4CkY1UWR4A


嵌入式基础--解析字符串(1)
https://mp.weixin.qq.com/s/opv2y77L8JV3OyySwEpabw


未完待续
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2021-7-31
在线时间
2 小时
 楼主| 发表于 2021-8-2 14:04:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2020-3-20
在线时间
25 小时
发表于 2022-6-7 17:35:23 | 显示全部楼层
很好,学习额了
回复 支持 反对

使用道具 举报

10

主题

116

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2021-12-23
在线时间
202 小时
发表于 2023-5-26 10:00:32 | 显示全部楼层
mark~~
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2016-9-12
在线时间
11 小时
发表于 2024-3-14 13:29:48 | 显示全部楼层
MARK!很实用的干货,感谢分享!
回复 支持 反对

使用道具 举报

10

主题

560

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1739
金钱
1739
注册时间
2014-6-27
在线时间
943 小时
发表于 2024-6-25 10:10:45 | 显示全部楼层
那个延时计算看起来是有点头疼,有更简单的:

//理论最大误差有1ms
//进while时候,如果一个节拍刚好完成,立马x1!=x2,则误差有1ms
//就算不成立,误差范围0MS-1ms
void comm_ms_dly(u32 ms)
{
              u32 x1,x2;
             x2=x1=comm_get_ms();
             while(ms)
                {
                           x1=comm_get_ms();
                           if(x1!=x2)
                                 {
                                            ms--;
                                            x2=x1;
                                 }                                         
                }
}

void comm_s_dly(u32 s)//最大延时几十年
{
          while(s)
                {
                           comm_ms_dly(1000);
         s--;                       
                }
}
delay延时应该考虑以us为基准,得到的延时理论误差就是us级别了,滴答节拍则没有1MS限制,5MS,10MS等随意设置。
void comm_ms_dly(u32 ms)
{
      while(ms)
{
       comm_us_dly(1000);
}
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表