单片机外设实验——0. 搭建实验环境
Posted Lvcx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机外设实验——0. 搭建实验环境相关的知识,希望对你有一定的参考价值。
实验清单
资源获取
打开华为人才在线官网中资源中心的链接
https://e.huawei.com/cn/talent/#/resources?tabKey=1,在网页左侧的页签中选择“职业认证”,
并在“技术方向”中勾选“物联网”,在“级别”中勾选“HCIA”。之后网页将会呈现所有与
物联网认证 HCIA-IoT 相关的资料,在这些资料中选择名为“HCIA-IoT V3.0 工具包.rar”的文件
进行下载。
1. HUAWEI LiteOS Studio 安装
双击“HCIA-IoT V3.0 工具包/实验工具/HUAWEI-LiteOS-Studio-Setup-x64-1.45.7.exe”文件:
选择安装位置:
添加快捷方式:
进行安装:
安装完成后如下:
移植编译器:
安装成功后会出现C:/Users/<UserName>/.huawei-liteos-studio 目录。该目录用于存放集成开发环境中会使用到
的插件、编译器和烧录器等工具。
将 HCIA-IoT V3.0 工具包/实验工具/hcc_riscv32_win 文件夹复制并粘贴至C:/Users/<UserName>/.huawei-liteos-studio/tools/hi3861 文件夹内。
安装中文语言包:
在弹出的文件夹窗口中,进入 HCIA-IoT V3.0 工具包/实验工具文件夹,选择
MS-CEINTL.vscode-language-pack-zh-hans-1.45.1.vsix 文件,并点击“Install”。
在完成安装后重启 HUAWEI LiteOS Studio。
在完成集成开发环境重启后,在键盘输入快捷键 Ctrl+Shift+P 打开命令面板,在界面上方的命令输入框中输入“Configure Display Language”并回车。
在输入框中弹出的语言中选择“zh-cn”,弹出重启集成开发环境完成配置的提示窗口,点击
“Restart”,即可完成语言切换。
安装串口驱动:
双击 HCIA-IoT V3.0 工具包/实验工具/CH341SER.EXE 驱动程序,进行串口驱动安装。
2.Python环境安装很简单可以参考一下网上的其他教程,安装的版本最好是3.8及以上版本
需要安装以下几个库:
pip install pycryptodome
pip install ecdsa
pip install pywin32
pip install scons
安装完成后在命令行输入如下命令查看 SCons 库版本:
scons -v
若返回如下内容则表示安装成功:
3. 实验环境设置及编译源码
在开始进行源码编译之前,首先需要确认源码的路径上无中文。推荐将 “HCIA-IoT V3.0 工具包/实验源码/HCIA-IoT” 文件夹移动至 D 盘目录下,如 D:/HCIA-IoT 放置源码。
打开 HUAWEI LiteOS Studio 集成开发环境,点击左上角“文件”->“打开文件夹…”,并打开D:/HCIA-IoT 文件夹。
在开发环境上方工具栏中点击“工程配置”按钮进入配置界面。
目标板配置
编译器配置
在“工程配置”界面左侧选择“编译器”进入编译器配置界面,选择编译器类型为
“riscv32-unknown-elf”,选择编译器目录为前面设置的编译器目录中的 bin 目录,如:C:/Users/<UserName>/.huawei-liteos-studio/tools/hi3861/hcc_riscv32_win/bin。在选择 SConstruct 脚本目录时,可以点击右侧“放大镜”图标自动搜索脚本。若自动搜索失败,
可以选择源码目录下的 SConstruct 脚本,如:D:/HCIA-IoT/SConstruct。
编译源码
由于源码当中包含之前测试时留下的烧录文件,所以可以点击重编译按钮将之前已完成编译的文件重新进行编译,后续对代码进行编辑后,选择“编译”按钮即可。点击集成开发环境上方工具栏中的“重编译”按钮进行编译。
若源码编译成功,集成开发环境下方的终端将会出现“BUILD SUCCESS”相关字样:
4. 烧录与调试
烧录器配置
点击工具栏上的“工程配置”按钮,在界面左侧中选择“烧录器”进入烧录器配置界面。在烧录方式中选择“HiBurner”,烧录器目录保持默认即可,烧录文件选择
D:/HCIA-IoT/output/bin/Hi3861_demo_allinone.bin 文件。
串口配置
使用 USB 线将 Hi3861 开发板连接至电脑,打开“工程配置”界面,在左侧选择“串口配置”进入串口配置界面。若开发板正常连接,则可以在“端口”中观察到“COM X”的字样。(X为任意数字)将波特率设置为 921600,并点击“确认”完成配置。
烧录并观测实验结果
在集成开发环境上方工具栏中选择“烧录”按钮启动烧录。
点击“烧录”按钮后将会启动 HiBurn 烧录程序,此时需要按下开发板上的“RST”按键来进行烧录。此时 HiBurn 烧录程序将会先连接,再烧录,需要等待一段时间。在出现如下界面后才表示烧录完成,点击“关闭”按钮即可。
5. 调测
在集成开发环境中上方的工具栏中点击“串口终端”按钮来打开串口终端界面。
在弹出的串口终端中将“波特率”设置为 115200,并点击右侧串口开关打开串口。此时点击开发板上的“RST”按键重置开发板,就可以在串口终端上观察到打印的“Hello World!”字样,同时开发板上在“RST”上方的 LED1 灯将会闪烁。
Q1:编译和重编译的区别是什么?
【参考答案】
编译只针对在上次编译之后更改过的文件进行编译,而重编译会编译所有文件。由于重编译会编译所有文件,一般相当于执行清理和编译。
Q2:在确定编译器、烧录器等目录时,有些目录的路径非常完整,有些路径只有一部分,它们的区别是什么?
【参考答案】
路径完整的是绝对路径,只有部分路径的是相对路径。绝对路径是一个文件实际存在于硬盘中的路径,相对路径指的是与自身目标文档相关的位置。其中相对路径前通常使用“./”来进行表示,这里的“.”表示的就是当前文件夹的位置。
嵌入式02 STM32 实验01 端口复用和重映射
内设与外设:
端口复用和端口重映射都需要了解内设和外设,那么什么是内设?什么是外设?
内设:单片机内部集成的功能一般包括:串口模块、SPI模块(Serial Peripheral Interface 串行外设接口)、I2C模块(Philips公司开发的一种简单、双向二线制同步串行总线)、A/D模块(模数转换器)、PWM模块(Pulse Width Modulation 脉冲宽度调制)、CAN模块(Controller Area Network 控制器局域网络)、EEPROM(Electrically Erasable Programmable read only memory 带电可擦可编程只写存储器)、比较器模块等等,都是集成在单片机芯片的内部,有相应的寄存器控制,可以通过指令直接控制
外设:单片机外部的外围功能模块,比如键盘控制芯片,液晶(OLED、LCD)、无线模块等等,外设可通过单片机的I/O、SPI、I2C等总线控制
端口复用:
STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个内置外设使用的时候,此时是不可以作为外部外设使用的,此时这个端口就叫做被复用了。
比如一个端口可以作为输入输出(使能端口时钟),同时它也可以作为串口使用(使能串口时钟),此时就说明这个端口被复用了
端口复用是重点,只要使用stm32就要用到外设,外设是与gpio引脚共用(复用)的,即某些引脚既可以单纯作为输入输出,又可以作为具有一定功能的内设(如ADC, 串口等等)的引脚端口。
实现方法:
1、使能端口时钟
2、使能复用功能的时钟
3、按照数据手册配置端口模式
1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //①IO时钟使能 2 3 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //②外设时钟使能 4 5 //③初始化IO为对应的模式 6 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 7 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 8 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 9 GPIO_Init(GPIOA, &GPIO_InitStructure); 10 11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PA10 PA.10 浮空输入 12 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入 13 GPIO_Init(GPIOA, &GPIO_InitStructure);
端口重映射:
为了使不同器件封装的外设IO功能数量达到最优,可以把一些复用功能重新映射到其它的一些引脚上,也就是该端口很忙,你找它的徒弟,它也可以完成师傅干的事。
STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能。我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好的安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。
打个比方说,串口1的TX,RX引脚是在PA9,和PA10端口,但是同时它有两个映射端口PB6,PB7。开启重映射,PB6和PB7同样可以使用串口1。
也就是说把管脚的外设功能映射到另一个管脚,但不是可以随便映射的,具体看每个芯片的参考手册
实现方法:
1、使能重映射后的IO口
2、使能功能外设的时钟
3、使能AFIO时钟
4、依据数据手册设置GPIO口数据
5、开启重映射
1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//①IO时钟使能 2 3 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//②外设时钟使能 4 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);③复用时钟使能 5 6 //④初始化IO为对应的模式 7 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9//复用推挽输出 8 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 9 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 10 GPIO_Init(GPIOA, &GPIO_InitStructure); 11 12 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10 浮空输入 13 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入 14 GPIO_Init(GPIOA, &GPIO_InitStructure); 15 16 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);//开启重映射
以上是关于单片机外设实验——0. 搭建实验环境的主要内容,如果未能解决你的问题,请参考以下文章