自从用了STC官方的板子以后,我重新适应STC8(以前没用过),然后基本官方库函数有的,我都用库函数来写, ...
好的,谢谢指教。我来学习一下。
库函数确实要利用起来,更有通用性,也没必要重复敲写前人早已验证过的东西。
我这几天也下载了STC的库,大致看了下,里面做了更详细的宏定义,结构体之类,更有通用性,正准备仔细学习。
Yim_Hom 发表于 2024-7-17 14:50
最主要的你的串口初始化啊,发送那个IC dat啊,感觉好奇怪
做个标志位,采集到了通过串口发就行了,平时就 ...
其实这些初始化、中断、发送,都直接拷的手册的,第894页“串口 2 使用定时器 2 做波特率发生器”,再通过ISP波特率计算小工具生成的初始化代码,有几条,比如优先级,是出问题了想找原因才加进去的。现在水平有限,手册大部分代码都还没有注释,也只能一条条看,然后查询寄存器,想是每条都干嘛的。不如库函数来的直接,复制一条直接选开或者关就行了。
最后那个u32 read_IC_dat(u8 address)自己写的,其实根本就没运行到底,开总中断后,运行到两个Uart2Send()就痿了,后面的您可以只当没看到{:shy:}
xwldkf 发表于 2024-7-17 20:20
其实这些初始化、中断、发送,都直接拷的手册的,第894页“串口 2 使用定时器 2 做波特率发生器”,再通 ...
但是真的好特别,高手的话,会在过程中重新初始化某个外设进而执行,也是有一定的前提。
如果要用串口就初始化完再进主循环,能降低串口出问题的概率,不然串口中断和主循环里初始化万一有冲突,那你串口究竟有没有起作用,也不知道,等于串口还是不通。
最重要的是基础,能把基础用起来,调通它,然后逐步的中断嵌套也好、中断先后也罢,总归是能跑通。如果跑不通,得多难受啊{:lol:}
低内聚高耦合,也是强调尽可能的实现需要的各个函数彼此之间通过一定的方式能够高度耦合起来,但函数内部基本不发生过多的彼此调用,保证各函数的独立性。
我也是一点点自学起来的,所以知道容易走弯路的地方。仅是建议供参考。
加油!
感谢各位大佬的指教。
我现在明白,手册的P894这几段范例,用在我这种STC8串口读取另外芯片数值的场合可能是不合适,不能直接用,需要重新修改。
其实我最初想问的是,用Uart2Send()发送完数据,为什么没进中断函数?或者由于种种原因就没有发送成功?发送还用管?
作为初学者,我所理解的,这玩意,不就是和做头发一个道理吗?双方商量好,你拱两下,她颠一下,共奏和谐曲,播撒爱的种子。现在你拱你的,还不知道拱哪里去了。可能是因为有人敲门了,可能是拱旁边去了,也可能是她没颠好,反正,现在拱了一下,就停这了,最后可能撒了一肚皮,还没个结果。说没看教育小电影吧,咱看了,说没按小电影步骤来吧,也不完全,也就中途换了个别姿势。既然大佬们都给了他实践过的小电影,咱就再学习学习。
水平有限,急也急不来,先放着吧。一边学习,一边准备别的方案。做产品,不管什么原因,软件硬件的干扰的,只要没办法把控,或者说原因不明的,都当作不可靠,都要先缓缓,换方案再测试。
谢谢各位大佬费时费心指点! Yim_Hom 发表于 2024-7-17 20:38
但是真的好特别,高手的话,会在过程中重新初始化某个外设进而执行,也是有一定的前提。
如果要用串口就 ...
我是第一次弄这个,满打满算才几个月,还得算上看论坛的学习视频。真是小白,自己也觉得不妥,按我别的行业的经验套话,这程序就没任何保护,裸跑的,就算通了,不可靠的地方也多。我觉得应该先搞清楚起始,再做基础,再考虑保护。我来慢慢学习,感谢指导。 Yim_Hom 发表于 2024-7-17 20:38
但是真的好特别,高手的话,会在过程中重新初始化某个外设进而执行,也是有一定的前提。
如果要用串口就 ...
您这个方面提醒了我,不能每次调用一下函数就初始化一次啊,我为啥不放主循环外面?我得改改试试。谢谢! xwldkf 发表于 2024-7-17 20:58
您这个方面提醒了我,不能每次调用一下函数就初始化一次啊,我为啥不放主循环外面?我得改改试试。谢谢! ...
都是这样,一点点学一点点改,但是能少走弯路多好 发送后等待一段时间强制置零可以解决,9600等待1.5ms实测可行
页:
1
[2]