求一段 电脑用串口调试工具向STM32发送数据控制LED灯 的STM32 程序

我是单片机的初学者,想在开发板上做一个STM32串口和GPIO的练习,比如初始化GPIO后先点亮LED2,串口收到数字1时单片机点点亮LED1,当单片机串口接到电脑发送的... 我是单片机的初学者,想在开发板上做一个STM32串口和GPIO的练习,比如初始化GPIO 后先点亮LED2 ,串口收到数字1时 单片机点点亮LED1,当单片机串口接到电脑发送的数据后产生中断,在中断服务函数中很据所发的数据来判断是否点亮LED1 , 我是初学者,还请注释写细点
GPIO b0 指向LED1 GPIO C3指向LED2 串口使用USART1
另外想请教下 (1)Main 函数里 末尾写一个 for(;;)的内容为空的死循环的话 ,是不是程序执行到死循环就一直停着,而不会再重头执行 main里面的程序
(2)main 函数里 掉用了其他程序文件的函数后,是不是会回到main里继续执行被调用函数后的其他程序语句
展开
 我来答
yzjgod
2015-10-23 · TA获得超过186个赞
知道小有建树答主
回答量:322
采纳率:100%
帮助的人:154万
展开全部
既然是初学者,这种问题最好自己解决,看STM32数据手册,上网找例程自己改,才能学到东西。
main函数里必须要有while(1)或者是你说的for(;;),因为如果没有的话,程序执行完后会跑飞的,出现各种莫名其妙的错误。
你main函数里除了初始化配置在while(1)前之外,所有的非中断程序都要在死循环里做。
main如果没有while(1),程序执行完后就不知道跑到哪里了,不能这么干
追问

  我在中断服务函数里面加了些操作,接收到串口中断 点亮LED1 就可以(图1),但是加一个if判断,接收到的值等于1时LED1 亮,就没有反应(图2),不晓得为什么,请高手指点下~

图1

 然后图2


 

追答
因为你串口收到的不是数字1,而是ASCII码的1,ASCII的1应该是0x31吧,你可以这么写
if(ch == '1')
'1',加个单引号,表示字符串的1
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式