电子发烧友第一次pcb layout大赛
直播中

lcmbeyond04

11年用户 82经验值
擅长:数字及可编程逻辑 EDA/IC/PCB设计
私信 关注
[william hill官网 活动]

【从零开始学STM32】点亮LED之串口初体验

本帖最后由 lcmbeyond04 于 2013-11-7 09:22 编辑

对于不同的产品可能会用到不同的接口,诸如SPI,I2C,I2S,CAN等,但是串口,只要涉及单片机的,串口是必须懂的,不是指烧程序必须要串口,而是对于调试程序,串口是万能的。

我朋友有在方案公司的,有在上市公司的,调试程序,首选软件调试,就是keil里面那个d图标,其次是串口,而对于JLINK什么的(我没用过,不知道是怎回事),一般很少用。玩51单片机我经常用软件调试,而STM32基本都是用串口,因为用软件调试经常被while(xx!=1);这类的语句卡住。

这次教程是使用串口来改变   LED闪烁的样式  和  延时的时间 。用串口做些有用的操作

串口的初始化,我基本是复制粘贴正点原子例程的,使用了库函数,初始化的程序基本都是一劳永逸的,前辈的东西不直接拿来用,太不给面子了。稍微修改了一下NVIC,因为自带的NVIC比库函数简单太多了,所以就不使用库函数,前一贴有介绍NVIC。
涉及到NVIC的就下面2句,简单到吓尿了不。
NVIC_SetPriority(USART1_IRQn,6);
NVIC_EnableIRQ(USART1_IRQn);                        


串口中断使能接收中断即可,有人会问为什么发送不用开启中断??-> 因为爱情(╯3╰)

这个没太多要说,开始写这个程序也出来点问题,我加入了串口的语句进行调试,后面调试好了,也没删,只是注释了,有需求的可以看看是怎样使用串口调试,上面有注释。

我看过很多用串口发中文给单片机的。。。这个只能自娱自乐用。。在电脑上发中文给单片机,单片机回复中文。。怎么我感觉单片机有点多余,因为不要单片机也可以做到这个。在单片机中添加中文发去串口,那是很重要的,因为这是给人调试看的。而人发中文给单片机,你当它是步步高翻译机么。当然也有比较例外的时候,例如要查看中文字是否转换成LED屏用的字符(没试过纯猜测),初学51的时候,我就是给这些中文误导了。。感觉很神奇,同时一头雾水。


这次调试没遇到太多问题,时间都花在怎样检测串口协议上面,也是由于几个语句顺序弄乱了导致出错,所以这次我也不知给什么问题大家思考,而是直接给出了一个不成功的版本,当你按协议发送数据给单片机时,它会卡住,问题主要出在主函数和串口中断里(初始化是没问题的了),卡住时串口会返回数据,希望大家能跟着数据顺藤摸瓜,把问题找出来,这其实也是我写程序时的一时疏忽导致的错误。
当你能把这个消化掉,串口,NVIC,GPIO已经没太大问题了,下一个帖是使用定时器来代替delay函数达到不让CPU在空等待,然后在这个基础再加入按键捕捉瞬间的LED状态,这个需要点时间来修改。所以这期一共3个帖:
https://bbs.elecfans.com/jishu_400655_1_1.html
https://bbs.elecfans.com/jishu_400704_1_1.html
附件主要是能正常用得工程,和一个出错的工程,还要一份非常简单的自定义协议,烧写文件位于output ->obj




附件: 您需要登录才可以下载或查看附件。没有帐号?注册

回帖(7)

13215873

2013-11-7 20:20:12
看看先~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
举报

周红伟

2013-11-8 13:14:19
顶一下
举报

零芐9度

2013-11-17 11:51:51
下过来试一下~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
举报

Bruce0417

2014-1-22 13:30:23
好文章,正好在看STM32,有用的參考!
举报

sasad天狼

2014-1-22 14:35:37
                     
举报

Mckean

2014-2-18 11:54:42
不错 , 加油!!!
举报

马平

2016-4-1 09:34:01
刚***。。。。。。。。。。。。。。。。。。。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分