学习报告
学习报告
一、USART
的学习
(1)学习目标:
任务一、使用串口调试助手对单片机外设进行一些简单的控制,比如控制LED灯的亮灭
任务二、使用串口调试助手对舵机进行控制
(2)学习成果展示:
任务一:利用usart中断控制LED
任务二:利用usart中断控制舵机
(3)学习目标任务过程中遇到的困难:
1、已确定代码无问题,但是发送给串口的数据就是无法通过usart中断函数发送到PC的串口调试助手打印窗口。在历时6个小时后,终于解决了,真就不是代码的问题,而是软件的设置有问题。
先说解决办法:找到keil主页面的“魔术棒”如下图(中间那个):
然后点进去找到“target”一栏,找到“use micrllib”的字样,在其前面勾选,如下图
这样,问题就解决了!串口成功接收!
1.1勾选use micrllib原因:
1.1.1、勾选use micrllib将使用半主机模式,半主机模式是用于 ARM 目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。 例如,使用此机制可以启用 C 库中的函数,如 printf() 和 scanf(),来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。 这种机制很有用,因为开发时使用的硬件通常没有最终系统的所有输入和输出设备。 也就是说勾选后半主机可让主机来提供这些设备。勾选之后简单的来说,半主机模式就是通过仿真器实现开发板在电脑上的输入和输出
1.1.2、不勾选use micrllib的话,printf重定向代码部分要改成如下:
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
_sys_exit(int x)
{
x = x;
}
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口 */
USART_SendData(DEBUG_USARTx, (unsigned char )ch);
/* 等待发送完毕 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
return (ch);
}
改成这样之后我一打开串口调试助手,接收屏幕就不断发送乱字符,如下:
然后在main函数里面加了一段代码:
while(1)
{
}
然后就可以正常接收了。。。。。。。。。。(具体原因还有待深究)
2、第二个困难:
由于我不想给屏幕上发送uctemp的值,觉得臭,然后注释掉了下面那段代码:
USART_SendData(DEBUG_USARTx,ucTemp);
但是注释掉之后发现不能连续发送指令控制LED了,查了手册之后才发现,原因如下蓝色字体:
就是说如果未发送数据就退出不了中断。。。。会永远停留在如下的语句当中:
所以每次复位单片机后只能发送一次指令并执行。
二、USART
与OPENMV
结合
(1)学习目标:
任务一、利用串口通信将openmv与stm32进行一个简单的通信,并点亮一个灯。
(2)学习成果展示:
(3)学习中遇到的困难:
3.1:
刚开始接触openmv,什么都不会,想要把openmv往pC机的串口调试助手发送颜色块的中心位置,结果发现总是打开不了串口调试助手,显示串口正再被占用。后来才知道,openmvide本身就有个类似串口调试助手的终端,是这里占用了。想要openmv独立运行代码而不使用openmvide的串口终端,就必须使用脱机运行。
如何脱机运行呢?下面这个链接有教程,是openmv中国代理的一家公司的教程:openmv如何脱机运行,看完即可
3.2
openmv通过串口发送单个数据可以,但是发送多个数据总是接收不到,这个还未解决。
学习总结:本此任务未圆满完成,openmv和stm32的未完全通信
下周任务准备:完成上次未完成的任务,下次任务视情况而定。
本文地址:https://blog.csdn.net/qq_47146145/article/details/109681282
推荐阅读
-
Spring学习之依赖注入的方法(三种)
-
Sql学习第二天——SQL DML与CTE概述
-
Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示
-
Sql学习第三天——SQL 关于CTE(公用表达式)的递归查询使用
-
Sql学习第三天——SQL 关于with ties介绍
-
Sql学习第一天——SQL 练习题(建表/sql语句)
-
Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识
-
Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
-
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
-
基于Android应用中如何反馈Crash报告的详解