STM32纳秒级延时(nsdelay)的指令延时实现方式及测定STM32的主频一般在几十到几百MHz,因此其时钟周期在纳秒级,如果要实现纳秒级延时,除了用定时器方式实现,可以用如下两种指令延时方式。但是需要注意,这两种方式不能直接表达延时的具体时长,随MCU的主频其延时时长会变化,需要经过测定方式来了解具体时长。nop延时方式通过nop指令可以实现一个空指令周期,属于纳秒级延时,HAL库的实现方式:__NOP();实际上就是:__ASMvolatile("nop")移位延时方式右移一位操作是各种计算过程里占用时间最少的操作,也是纳秒级,先定义一个变量:uint32_tns_delay=0xff
搭建Arduino开发环境前言一、Arduino软件1.软件下载2.软件安装3.软件操作二、Cortex官方内核三、烧录下载四、其他第三方内核1.Libmaple内核2.Steve改进的LibMaple内核3.STMicroelectronics(ST)公司编写的内核总结前言本章介绍搭建STM32搭建Arduino开发环境,包括软件下载,安装配置,烧录下载等内容。一、Arduino软件1.软件下载arduino官方软件下载地址:https://www.arduino.cc/en/software可以根据需要选择不同平台的软件,推荐使用安装版。2.软件安装安装版是EXE可执行文件,双击就开始安装
1.ESP8266的器件介绍2.ESP2866外设 的引脚 3.我所用的的ESP2866的引脚图4.代码编程的串口5.wifi的指令1. AT 测试指令2. AT+RST 重启模块3. AT+GMR 查看版本信息4. AT+RESTORE 恢复出厂设置5. AT+UART=115200,8,1,0,0 串口设置 串口号,数据位,停止位, 6. AT+CWMODE指令 (AT+CWMODE=2)设置WIFI模式为AP模式,也就是充当热点模式AT+CWMODE=1为Station模式,AT+CWMODE=3位AP+Station模式AT+CWMODE=1这是设置STA模式,延时2.
一环境搭建1安装vscodevscode下载地址:https://code.visualstudio.com/download2安装esp32插件安装espressifIDF插件3下载sdk以及开发工具进入EspressifIDF界面,点击ADVANCED设置好下载目录,等待下载完成,下载sdk时默认是从github上拉取,网络不好可能比较耗时。这里会列出来详细的命令二创建工程点击查看,命令面板或者使用快捷键ctrl+shift+p输入ShowExamplesProjects这里会列出来当前sdk支持的全部demo这里选择一个blink的demo三tcp协议1tcpserver服务端有两种连接
基于App控制的STM32温湿度控制系统(WIFI模块)ESP8266WIFI模块模块使用说明常用AT指令DHT11温湿度传感器简介模块数据的发送流程代码实现μs级的延时配置HAL库配置代码实现项目总框架总框架图单片机控制流程图APP控制流程图项目代码实现WIFI模块STM32单片机(主机)初始化WIFI模块控制任务DHT11数据发送给WIFI模块APP的编写布局文件逻辑代码BUG记录WIFI模块的发送开任务之后main.c里的while不跑了ESP8266WIFI模块在这个项目中我选用的正点原子的WIFI模块(ATK-ESP8266),这个模块采用串口(LVTTL)与MCU(或其他串口设备)
stm32基于HAL库驱动外部SPIflash制作虚拟U盘📌参考文章:https://xiaozhuanlan.com/topic/6058234791🎞实现效果演示:🔖上图中的读到的FLASH_ID所指的是针对不同容量,所对应的ID。//W25X/Q不同容量对应不同ID关系W25Q80ID0XEF13W25Q16ID0XEF14W25Q32ID0XEF15W25Q64ID0XEF16W25Q128ID0XEF17W25Q256ID0XEF18🔖在电脑端,支持对虚拟出来的存储器进行读写操作。✨如果设计成一块PCB,可以制作成一个微小容量的移动U盘。🌿基于STM32F103,HAL库生成的代码,
一、运行环境:❤操作系统:windows10x64❤IDE:Arduino1.8.15❤运行库1:TFT_eSPI❤运行库2:ESP8266❤开发板硬件:ESP8266-CH340 , ST7789-240*240-TFT显示屏二、引脚接线#ESP8266ST7789备注GGND3VVCCD5SCLD7SDAD4RESD3DC三、安装TFT_eSPI运行库#3-1安装库#打开Arduino,进入:工具--> 管理库...,搜索:TFT_eSPI,选择版本,点击安装下图为已完成安装3-2修改头文件代码#由于本次使用的ST7789TFT显示屏,需要对头文件 User_Setup.h进行修改,该文件
1.前言最近作者一直在研究DM9051芯片的工作机理,在此过程中,上网上找了很多资料,但根据资料还是不能了解很通透。因此我直接开始实战,经过多番周折,终于调通了程序。再此篇文章分享下自己的调试过程,也把疑问分享一下!(写的比较潦草,资料在最后)2.DM9051介绍DM9051NPSPI接口网卡芯片是为了方便MCU单片机系统进行以太网通信而开发出的解决方案。DM9051NP芯片是带有行业标准串列外设接口(SerialPeripheralInterface,SPI)的独立以太网控制器。DM9051NP符合IEEE802.3规范,它还支持以DMA模式來传输,以实现资料传送快速。DM9051NP通过1
内存映射stm32的flash起始地址为0x08000000,结束地址为0x08000000加上芯片实际的Flash大小,不同芯片Flash大小不同,RAM同理。对于STM32F103RCT6,Flash256KB,所以结束地址为0x0803ffff。Flash中的内容一般用来存储代码和一些定义为const的数据,断电不丢失。RAM可以理解为内存,用来存储代码运行时的数据,变量等等,掉电数据丢失。STM32将外设等映射为地址的形式,对地址的操作就是对外设的操作。stm32的外设地址从0x40000000开始,可以看到在库文件中,是通过基于0x40000000地址的偏移量来操作寄存器以及外设的。
“阻塞与非阻塞”机制:阻塞:使用休眠唤醒机制,read函数会休眠,是阻塞的使用poll时,如果传入的超时时间不为0,表示read函数会休眠,这种访问方法也是阻塞的。非阻塞使用poll时,可以设置超时时间为0,这样即使没有数据它也会立刻返回如何让read函数既能工作于阻塞方式,也可以工作于非阻塞方式?APP调用open函数时,传入O_NONBLOCK,就表示要使用非阻塞方式;默认是阻塞方式。注意:对于普通文件、块设备文件,O_NONBLOCK不起作用。注意:对于字符设备文件,O_NONBLOCK起作用的前提是驱动程序针对O_NONBLOCK做了处理。intfd=open(“/dev/xxx”,O