四:物联网ARM开发

软件安装

keil5软件的安装包(软件开发)-> Keil.STM32F0XX_DFP.1.4.0.pack (这是STM32F0设备安装包)-> KEIL_Lic(破解keil的安装包) -> 安装 ST_LINK 烧写工具 -> 安装Java运行环境 -> 选择STM32CubeMX(微控制器图形化配置) -> stm32cube_fw_f0_v180 (库文件)

介绍:ST_LINK

  • ST_LINK 是 STM32 芯片的仿真器,这里介绍烧写工具的安装,通过这个软件操作ST_LINK 将.hex 文件烧写到芯片上。此软件用于为 M0 烧写 bootloader 文件。我们在 keil中编译好的代码可以使用它们本身进行下载

ARM体系结构概述

1:控制外设led灯还有一些按键这些就要用到gpio,采集传感器的数据需要adc进行转化数据格式,特殊的外设和传感器是通过特殊的协议接口去进行连接的比如一些轴传感器和主控器的连接是通过spi,IIC 控制的,还有调式和编写程序需要打印信息是通过串口进行打印。cpu需要实时监测这个数据需要通过中断这种方式,如果还要跑系统就会有时钟,定时器



一:存储器映射

1.1 访问寄存器


1.2 启动模式


  • 当BOOT0 是0的时候就是从flas启动,当BOOT0是1BOOT1是0的时候就是从System Memory启动(也叫ISP也介绍串口下载程序),当BOOT0是1 BOOT1是1 的时候 就是从内置的sram启动。我们是用link的方式启动就是从flash方式

二:GPIO 编程




2.1.1 模式寄存器
2.1.2 输出类型寄存器

如果设置成了开漏有可能你得不到高电平,如果要得到高电平要接一个上拉电阻,如果是推晚可以正常得到高低电平,开漏状态比较适合电流类型,如果驱动led设置成推晚就可以了



2.1 寄存器led版本

任何一个外设的工作都需要开启时钟,这个时钟就相当于这个外设工作的脉搏,

  • 这个有一个很大的缺点,每次去控制这些寄存器的时候,都要去查阅参考手册才能确定寄存器每一位的含义还要去操作比较繁琐,更不要说其它外设了

2.2 led 库函数版


2.3 按键



三:uart 串口的应用

串口通信需要连接usb/



串口的通信速度就是通过波特率进行衡量的





3.1 寄存器介绍 (USART_SR最重要)






3.2 串口数据的收发

3.4 串口收发的代码

  • 设置串口的时候可以设置波特率和奇偶校验(有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步),
  • 这里需要自定义串口的接收然后加载到宏上,由main方法调用

  • 这一种呢是用库函数

3.3 串口使用prinf


3.5 串口使用prinf的代码

四:STM中断系统


4.1:stm32中断概述


中断的应用场景比如说鼠标点击的时候




4.2 :外部中断控制器




如果在SYSCFG_EXTICR0里面选择了x001那么它在EXTI0选择了PB0引脚

这个输入线可以是gpio的任意一个配置,

4.3 按键中断


4.5 按键中断的代码

  • 这个中断一但发生了就会到我们的入口地址

  • 这是一个空方法的回调

  • 因为按键中断是控制引脚中断也就是gpio控制所以把回调的方法重写到gpio里面

4.4 串口中断


串口中断的代码


五:stm32 时钟系统

5.1 stm32 时钟系统概述









5.2 SysTick定时器简介





5.3 HAL_Delay()分析


5.4 STM32通用定时器介绍





时钟的代码

  • 时钟产生的定时中(中断)需要打印就用到了串口



六:模数转化adc

  • 任何一个部件它工作都需要时钟的,时钟它需要分屏,

6.1 ADC模数转化概念








  • 看门狗其实就是设定上下值一但超过就中断

6.2 ADC 通道采集代码

  • 采集光照传感器的数据,启动转化,并且采集好数据之后,开启中断


6.3 多通道采集代码

  • 按键和光照实现采集数据
    adc最多只能运行14m,pclock最多48m,所以最多4分屏,二分屏已经超过了它的最大值。

    七:DMA
  • 利用ADC采集按键以及光照传感器的数据,在按键中断处理程序中启动DMA传输,
    最后在DMA完成中断中打印采集到的数据

启动

七:iic

NB-IOT开发

一:初始 NB-IOT

1.1 nb-iot 介绍



1.2 NB-IOT 硬件平台的介绍及使用





1.3 stm32CubMx 安装及使用



二:使用NB-IOT模块

2.1 使用 NB-IOT基础模块建立

2.2 at 指令集开发原理









三:NB-IOT连接网络

3.1 建立起自己的服务器



3.2 at 指令TCP 通信

四:实现代码驱动NB-IOT

相关推荐
wuminyu6 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
新时代牛马7 小时前
嵌入式网络完整篇:从LwIP/以太网驱动到 Linux netdev 与排障
linux·网络·php
猿与禅7 小时前
Linux(Ubuntu)入门到实战:系统管理、常用命令与权限体系完整指南
linux·ubuntu·apt·进程管理·系统运维·用户权限·vi/vim
前端世界7 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮7 小时前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
H_oRIZoN_12 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
jianqiang.xue13 小时前
ESP-IDF保姆级入门41|产品级故障排查与稳定性优化全解:死机复位排查/内存泄漏定位/性能瓶颈分析/长期稳定性测试,掌握量产运维问题定位方法论
单片机·mcu·物联网·esp32
GeW14 小时前
RHCE备考别瞎学!按这个计划走,30天提高通过率,快速拿证
linux
Escalating_xu14 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
傲世仙尊14 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++