从四月份到八月份的比赛结束,取得了华东赛区一等奖和全国总决赛二等奖。说起来,也是跟在梦中似的~没有想过真的可以进去国赛,也算是吃到了赛道的福利了。在华东赛区和总决赛的作品演示室看到他们的作品,看的我都自卑了,很高级,我们的作品很简陋,太简陋了,搞得我都想跑了 ~
我负责的是写APP和数据大屏,但是连整合单片机的部分都是我来写的,一个字“累”!写鸿蒙APP,也是只学习了三天ArkTs就直接开始写了,ArkTs也是基于TS来的,与JS相对,TS确实简单很多,我主要是有基础啦。总结就是,UI很烦很烦!!!没有艺术细胞的我,画UI简直是酷刑!!!
整合单片机的也是一个折磨,两个队友的代码习惯不一样,不能直接调用函数,而且出现的bug最多的就是单片机……语音,WIFI,LoRa这部分都是我来的,有时候LoRa很奇怪,节点能发数据,但是网关收不到,在华东赛区的时候出现这个问题,吓得我手都在抖哈哈哈。
数据大屏这部分没啥好说的,用的是低代码,会搞Http请求就没有任何问题了,挺简单的。
在总决赛的之前,临时买了一个ESP32Cam,缺点就是卡(供电需要5V2A的,他的烧录板没有!!!),清晰度倒 ...
野火 STM32
未读一、EXTI介绍外部中断/事件控制器(EXTI)管理控制器的23个中断/时间线,都有一个对应的一个边沿检测器,实现输入信号的上升沿和下降沿检测,都可以实现对每个中断/事件进行单独配置,可以单独配置中断或事件和触发事件的属性。
(EXTI是在APB2总线上的)
1、红色虚线和绿色虚线分别是 产生中断的线路,信号流入到NVIC控制器。
2、绿色虚线是产生事件的线路,输出一个脉冲信号。
3、输入线,EXTI有23个中断/事件输入先,可以为任意一个GPIO,也可以是外设的事件。
4、边沿检测电路,根据上升沿触发寄存器(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)对应位控制信号触发。
5、软件中事件寄存器(EXTI_SWIER),允许程序控制可以启动中断/时间线。
6、中断屏蔽寄存器(EXTI_IMR),可以简单控制EXTI_IMR来实现产生中断的目的。
7、挂起寄存器(EXTI_PR),内容输出到NVIC,实现系统中断事件中断控制。
8、事件屏蔽寄存器(EXTI_EMR),控制它来实现是否产生事件的目的。
二、编程要点1、 ...
野火 STM32
未读一、中断概述中断时出现某些意外需要主机干预,机器能自动停止运行的程序,转入新的处理的程序,处理完之后返回程序被暂停的程序,继续运行。
异常就是中断,中断就是异常。
异常分为:系统异常和外部中断。
二、NVIC介绍NVIC是嵌套向量中断控制器,控制芯片中断的功能。
一般来说,使用ISER(使能中断)、ICER(失能中断)和IP(设置中断优先级)寄存器。
(不常用)
三、优先级中断优先级寄存器NVIC_IPRx,用来配置外部中断的优先级。如果抢占优先级相同,九比较子优先级,如果都相同,比较硬件中断编号,编号越小,优先级越高
四、优先级分组优先级分组由外设SCB的应用程序中断和复位控制寄存器AIRCR的PRIGROUP[10:8]决定,主优先级=抢占优先级
12345678910111213141516171819202122/*** 配置中断优先级分组:抢占优先级和子优先级* 形参如下:* @arg NVIC_PriorityGroup_0: 0bit for 抢占优先级* 4 bits for 子优先级* @arg NVIC_PriorityGroup_1: 1 bit f ...
在wsl的ubuntu安装idf遇到没有串口的报错,是因为wsl不自带usb的驱动,需要手动安装
教程使用他人的:https://blog.csdn.net/qq_40695642/article/details/127270039
华为云IOT连接
未读ESP32连接华为云我使用的是arduinoied所写的代码,要注意,在mqtt请求华为云中,需要写心跳间隔,不然上云不了(client.setKeepAlive(60); //心跳间隔,很重要!!!)。代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147#include <ArduinoJson.h>#include <WiFi. ...
野火STM32
未读1、RCC主要作用 时钟部分设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK等于多少)、设置APB2分频因子(决定PLCLK2等于多少)、设置APB1分频因子(决定PLK1等于多少)、设置各个外设的分配因子。控制 AHB、APB2 和 APB1 这三条总线时钟的开启、控制每个外设的时钟的开启。对于 SYSCLK、HCLK、PCLK2、PCLK1 这四个时钟的配置一般是:HCLK = SYSCLK=PLLCLK ,PCLK1=HCLK/2,PCLK1=HCLK/4 。
2、RCC时钟树库函数时钟系统始终函数:SetSysClock()。
HSE时钟树设置为:
HCLK=SYSCLK=PLLCLK=180M(F429)
PCLK1=HCLK/2=90M(F429)
PLCK1=HCLK/4=45M(F429)
2.1系统时钟2.1.1HSE是高速的外部时钟信号,有无源/有源晶振提供,频率4-26MHZ。
有源晶振,时钟从 ...
鸿蒙开发
未读一、TS基础语法二、声明变量
二、条件控制
三、循环迭代
四、函数
五、类和接口
六、模块
七、UI布局分析
八、image组件
一些代码示例
华为IOT平台连接
未读一、查看接入信息
二、创建产品
三、注册设备
野火 STM32
未读7.1启动文件介绍1、初始化堆栈指针 SP=_initial_sp
2、初始化PC指针 =Rest_Handler
3、初始化中断向量表
4、配置系统时钟
5、调用C库函数_main初始化用户堆栈,调用main函数
7.2 ARM汇编指令EQU:给数字常量去一个富豪们,相当于C语言的define
AREA:汇编一个新的代码段或者数据段
SPACE:分配内存空间
PRE-SERVE8:当前文件堆栈按照8位字节对齐
EX-PORT:声明一个符号具有全局属性,可被外部的文件使用
DCD:字节单位分配,要求4字节对齐,要去初始化这些内存
PROC:定义子程序,与ENDP成对使用,表示子程序结束
WEAK:弱定义,如果外部文件声明了一个标号,则优先使用外部文件定义的标号,如果外部文件没有定义也不出错。要注意的是:这个不是 ARM 的指令,是编译器的,这里放在一起只是为了方便。
IM-PORT:跳转到一个符号
ALIGN:编译器对指令或者数据的存放地址进行对齐,一般需要跟一个立即数,缺省表示 4 字节对齐要注意的是:这个不是 ARM 的指令,是编译器的,这里放在一起只是为了方 ...