James Hoi's Blog

用单片机运行HelloWorld

Word count: 1.3kReading time: 4 min
2021/03/22 Share

(本文图片较大,建议用电脑查看)
(本文前言和介绍篇幅有点长,实际可从”开始”标题开始看)

前言

写完上次的“零基础搭建属于自己的博客”一文,我觉得我还是应该写一些科普或者教程,让同学们成功入门,我也顺便可以将我以往的经验总结一下。假如有朋友有想了解的东西,可以找我然后我写一篇文章入门(当然首先我也得会hhh),我擅长的方向大概是:机器人,单片机,网络安全,逆向,编程。

介绍

入门单片机首先总得了解单片机是什么。单片机普遍存在于我们的一些设备当中,例如台灯,通过编写程序让台灯每按一次按钮就减小亮度。又例如大家可能学过的Arduino,它是一款单片机。可以看出单片机一般和电路结合一起,控制电路量从而控制设备。那么由于一开始的单片机没有设备,能够显示HelloWorld也是比较困难的。

开始

本文用STM32F407VET6开发板作为示例。需要用到的软件有STM32CubeMX,Keil uVision5,XCOM(串口调试软件)。如何下载软件我还是不写了,本文的重点并不是这个。
关于硬件的购买,自行淘宝吧,需要一块stm的单片机,单片机的烧录器,usb转ttl模块
image.png
我自己的烧录器
image.png
由于显示HelloWorld需要用到串口,还需要买usb转ttl模块
image.png

设置项目

下载好软件后打开STM32CubeMX,点击New Project
image.pngimage.png
(不同版本软件可能界面不一样,但操作相似)
MCU Selector,选择你的型号,详细的型号可以在单片机芯片上看到,又或者问淘宝卖家。例如你是STM32F407VET6型号,那么选择STM32F407VETx,点击Ok
image.pngimage.pngimage.png
可以看到进入设置界面了,实际上到这一部分基本上你查百度已经有一大堆的教程了,说实话一开始入门不需要理解那么多的原理,先实际操作一遍能搞定再慢慢了解,先跟着教程做一遍吧。
image.png
RCC设置,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器),串口选择随意一个UART,选择模式Asynchronous,然后可以找到其中的两个口,PA0是UART4_TX,PA1是UART4_RX。RX是接收口,TX是发送口。
image.png

生成代码

点击Project –>Generate Reports或者点击快捷图标生成报告。系统会提示先创建一个工程项目。点击Yes设置工程。
image.png
输入工程名,选择工程路径(注意不要出现中文,否则可能出错)。工具链/IDE选择MDK-ARM V5。最后面可以设置堆栈大小,此处默认不作修改。
image.png
提示下载固件,点击Yes
image.png
按照下图选择,再点击GENERATE CODE生成代码

用Keil打开生成的代码,点击Open Project
image.png

编写代码

找到main.c的int main(void)函数里面的while (1)循环,把程序写在里面会不断循环运行

1
2
3
4
5
6
7
while (1)
{
char *ch = "HelloWorld";
//因为在cubeMX设置的是UART4,所以是huart4,10为HelloWorld的长度
HAL_UART_Transmit(&huart4, (uint8_t *)ch, 10, 0xffff);
HAL_Delay(1000);//停止运行1秒
}

写完代码后点击Build,然后再点Download。但点Download之前当然要先接上烧录器
image.png  image.png
如图,烧录器另一端usb接入电脑
image.png
注意:可能不单要接烧录器,需继续按照下面的接线教程接好后才能烧录(因为没有供电给单片机)

接线

找到原本cubemx设置好的uart4口,PA0和PA1
image.png
红框是PA0和PA1,绿框是电源3.3v和接地
image.png
将单片机的PA0和PA1按照下图接到usb转ttl小板上,因为单片机的接受(RXD)是另一块的发送(TXD),所以是反过来接(注意!!尽量接3.3v,若将5v接入单片机很有可能会烧坏单片机)。接好后再将usb转ttl模块usb插到电脑上。
image.pngimage.png
我的最终接线图
image.png
打开XCOM并选择串口打开即可看到输出,可以看到每1秒会输出一次HelloWorld
image.png

总结

总结就先声明一下,其实我也就会的东西不多,若有问题或者错误的地方,希望大家多多反馈,共同进步。
其实很多地方的细节都没写出来(真写出来就很长一篇文章了),文章的目的主要还是希望能让大家入门单片机开发。但写完之后我发现我后悔了,这不吃力不讨好吗…最后写完这文章我猜也没几个人跟着做完的,零基础教学的东西下次不写了。
image.png
最后打个广告,欢迎各位来参加MRCTF,同时天璇MERAK战队也欢迎您的加入
扩展资料:
CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。参加CTF能增长网络安全知识的同时,也能加深对计算机原理的深层次认识。在这里你不但能和学长交流探讨前沿技术发展,还能收获来自不同专业的小伙伴们。
image.png

CATALOG
  1. 1. 前言
  2. 2. 介绍
  3. 3. 开始
  4. 4. 设置项目
  5. 5. 生成代码
  6. 6.
  7. 7. 编写代码
  8. 8. 接线
  9. 9. 总结