目录
简介
我就读于一个普通大学,智能科学于技术专业,专业课有数电模电嵌入式,对硬件停感兴趣,由于上课有很多地方没听懂,到最后写综合设计和实验报告比较困难,但我还是想好好弄出来。此篇文章用来记录学习路线和遇到的各种困难
希望此篇文章能帮读者少走弯路
工具
仿真软件proteus 7
注意是7版本,不是8,之前安装了8,但老是闪退,后来百度是说8确实是这样,第7版要稳定些,学校机房也用的是老版本。以后可能会稳定,但现在2021年最好用8
编译软件keil
keil是一个大系列,不单单是一个软件,它旗下包括很多软件,比如keil-mdk 和 keil-c51
keil mdk主要是用来开发arm板的,好像也叫stm32
keil c51主要是用来开发51单片机的
当初老师说下载mdk,我以为mdk是不同于keil的另一个软件,走了许多弯路。
配试开发环境遇到的问题
要自己去找下载资源
keil mdk可能会有破解时间过期问题,即时间到2020年就到期了,自己在网上找,有新的注册机到2023年
破解报错时,其中一种是你没有以管理员身份运行
keil编译要某些板子要去官网下载特定的对应你自己板子的文件
我下了两个keil,下载第二个keil时把桌面的图标快捷式给弄没了,所以你得记住运行文件在哪
--------------------------------------------分隔符-------------------------------------------------------
学习路线
我是学软件的,对c语言,数电比较了解,编译原理没学过,计算机组成原理,模电,嵌入式,操作系统这几门课都学的不是很好。以上是对前任式有帮助的学科,当然我觉得就算没学好也不影响。但c语言是一定要学的
从易到难,做项目能更快的提升自己,在做项目的过程中抱有问题的去学习
- 总线式多点温度的智能检测与控制
- 操作系统移植
- 基于arm版的小车灭火机器人
总线式多点温度的智能检测与控制
我的入门指导:Proteus电路仿真及应用(51单片机系列)https://www.bilibili.com/video/BV1H7411n7AY
当我对嵌入式一窍不通的时候,各种工具也就听说了个名字,老师叫我们做实验我一脸懵逼。当初就是看的这个视频入了门,在此非常感谢视频创作者与分享者。这个视频主要讲的是没有实物硬件,用仿真软件进行学习,一共8个小时,2倍数4个小时就看完了,当然我只是过了一遍,其中的流水灯,lcd1602,和温度传感器因为作业原因多看了几遍并实现
操作系统移植
还没开始,我打算把ucos系统读一遍
基于arm版的小车灭火机器人
工业机器人的综合设计,正在做
https://blog.csdn.net/qlexcel/article/details/54949093 Keil的软件仿真和硬件仿真
https://blog.csdn.net/qq_22329595/article/details/79315028 J-Flash使用方法
https://blog.csdn.net/u012840934/article/details/83051384 Keil5 手动安装STM32 芯片包
http://news.eeworld.com.cn/mcu/ic486017.html 通过J-FLASH方式烧写程序到STM32
大概过程
先装环境:编译环境keil4,烧写工具j-flash,串口驱动,串口调试助手。
编译环境我用的keil4mdk,装好后要破解,然后你要建一个工程,工程编译的时候需要你的芯片包,这个就要自己去官网下载,网上有很多教程。还要下载J-flash用来把编译好的8进制文件进行烧录到单片机上。连接的时候可能识别不了,就需要串口驱动。然后单片机进行输出,如果想把内容输出到电脑上就要用串口调试工具。
过程中最难的就是环境的搭建和工具的使用,然后还有硬件的连接。像代码这则东西最好有现成的,直接就可以跑的,我搞这个实验花费最多就是查各种资料,其实到最后几乎都没用。如果有人能带你过一遍,把整个过程跑出来,程序写到小车上能够运行,那是最好的,可惜我是自己和室友照着教程一步一步弄的,教材早老的掉牙了,各种工具还不匹配,而且书上芯片和用的芯片不是同一个,真的服了,搞这个花了n长时间。其实原理特别简单,但最后要查收了我们没弄出来赶鸭子上架就用别人的了。
原理: 用红外探测仪,或者超长波传感仪,连接到单片机的面包板上,然后信号输入到单片机的某个io口,在单片机里写程序,通过时间来推算障碍物的距离,然后再发信号让电机转动,达到后退转弯什么的,就是避障了。灭火是一样的,用霍尔元件检测温度,然后做出反应。
代码如下,环境不一样直接拿过去是很难直接跑起来的,但是代码很简单,你看懂了自己改一下与自己环境对应就能实现了,然后这是避障的代码,灭火没时间搞了,老师说搞出来避障就算及格
这个是arm的 用的是stm32f103vct6
#include "stm32f10x_heads.h"
#include "HelloRobot.h"
#define LeftLaunch_1 GPIO_SetBits(GPIOE, GPIO_Pin_1) //左边红外发射
#define LeftLaunch_0 GPIO_ResetBits(GPIOE, GPIO_Pin_1) //左边红外发射
#define RightLaunch_1 GPIO_SetBits(GPIOE, GPIO_Pin_0) //右边红外发射
#define RightLaunch_0 GPIO_ResetBits(GPIOE, GPIO_Pin_0) //右边红外发射
#define LeftIR GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) //左边红外接收
#define RightIR GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) //右边红外接收
void IRLaunch(unsigned char IR)
{
int counter;
if(IR=='L') //左边发射
for(counter=0;counter<1000;counter++) //发射时间比胡须长
{
LeftLaunch_1;
delay_nus(12);
LeftLaunch_0;
delay_nus(12);
}
if(IR=='R') //右边发射
for(counter=0;counter