IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 万物基于点灯 -> 正文阅读

[嵌入式]万物基于点灯

1.购买开发板

淘宝或闲鱼购买?ST?NUCLEO-F103RB 开发板,买官方的开发板比第三方要 便宜大约60-80,而且板载下载器很方便.

2.下载资料

下载正点原子的资料,原子哥的资料还是很全,原子哥对中国stm32技术应用普及,比那些大学作用大得多.当然我不建议白嫖,买个最便宜的开发板吧,反正我买了.当然先白嫖,后补票也可以.

?

只下载资料就行,我又不是小白,视频就不用看了哈.

3.安装keil

需要注意的几点:

1. keil 这个开发工具,是收费的.不要在公司电脑上安装.个人电脑上安装没有问题.

2. keli 安装好后需要破解.破解软件 在正点原子qq群里 查keil注册机就能找到.

我用win10 安装的,这个软件安装遇见点问题,需要关闭 实时保护 不然 破解用的注册机打不开.

?

4.开始伟大的工作-点灯

官方的例程在:

I:\stm32\【正点原子】战舰STM32F103开发板资料 资料盘(A盘)\8,STM32参考资料\STM32Cube_FW_F1_V1.8.0

打开一个基础的GPIO例程,

I:\stm32\【正点原子】战舰STM32F103开发板资料 资料盘(A盘)\8,STM32参考资料\STM32Cube_FW_F1_V1.8.0\Projects\STM32F103RB-Nucleo\Examples\GPIO\GPIO_IOToggle\MDK-ARM

运行后DK上的LE2开始闪烁.

然后发现新装的快捷键不好使,改下:

比如改 Ctrl+D 跳转到定义.相应的改下,注释的快捷键.

?简单改了下代码重新烧录,居然没效果,试了几次,试到按下复位按键时才有效果.

想起来,新装的keil 要改下烧录配置.下图的 reset and run 勾上,程序烧录后才会运行.否则需要按下复位键才能运行.

?

?简单改下代码,试了下,这是个高电平点亮的led,为了验证,看了下原理图,确实是的.

	HAL_GPIO_WritePin(LED2_GPIO_PORT, LED2_PIN,GPIO_PIN_SET);//  GPIO_PIN_RESET , GPIO_PIN_SET
  

  /* -3- Toggle IO in an infinite loop */
  while (1)
  {
//    HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
//    /* Insert delay 100 ms */
//    HAL_Delay(100);
		
		
  }

代码点灯其实不利于外行去理解MCU,还是要用寄存器控制方便理解.如下图.

?点击 ODR5? 后面的小方框,选择打钩,那么LED亮起,取消勾选,LED亮起.其实单片机的io很简单,就和你用墙上的开关控制你家客厅的灯一样.

你去改变?ODR5 寄存器的bit位时,可以看到 具体寄存器二进制数值的改变.

后话:

关于点灯的方式有很多,你可以用寄存器点灯,你可以用库函数点灯,你可以用操作系统点灯.重要的不是灯,而是你的程序运行起来,并且按照你的预期显示出正确的现象.

作为一个开发者,如何看待一个灯?

第一个层面:

LED是一个GPIO

由GPIO高低电平控制,我在代码中控制寄存器,来让它亮灭.

第二个层面:

LED是一个硬件外设,

他具有 亮灭,呼吸,渐变,RGB调色,闪烁,这几种状态.

我需要把他模块化.我需要LED 执行的API,比如LED_ON();LED_OFF();接口给到主函数调用,这里要注意的是,API不应该带有IO的参数. IO的参数应该定义在,对于模块的 .h文件中.

第三个层面:

LED是产品和用户的交互接口.

?比如一个电视机屏幕,作为用户如何知道电视机到底开没有?通过指示灯,指示灯亮了,表示电视插电了,没亮表示电视机没有插电.

复杂一点的蓝牙耳机,红灯快闪,表示低电量.绿灯呼吸表示在充电,绿灯长亮,表示电充满了.

这里 电子产品的状态和指示灯,有一个对应关系.这个关系,在程序中应该呈现为一个表格.这个对应关系表应该是方便修改的.比如 产品需要通过LED告诉客户 一个 数字3,通过蓝灯闪三下,熄灭停顿,再闪三下.那么这个就包含了两种状态,灭+闪烁,灭的时间,闪烁的时间,都是可修改的参数.

真正的模块化架构,就是面向需求编程,模块接收一个事件,执行一个动作.如果看到代码能够一眼倒推出,该产品的功能需求.这样的代码才是优秀的代码.

后面我会在STM103上实现上述的代码.

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:23:50  更:2021-07-27 16:25:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:52:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码