
STM32
STM32
Hello Jason
认真写好每一行代码!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
无RTOS下使用队列出现的问题记录
这两天遇到一个问题,在无RTOS情况下,使用队列缓存串口接收到的数据,发现跑一段时间后,会出现队列中*Out和*In在NData为0时不一样。正常情况,当数据全部读取完毕后,这两个地址应该是一致的。后面经过思考,认为应该是我在串口中断中,将串口接收到的数据写入队列。有可能是正常程序正在执行队列操作,这时候中断打断了,写入或者读出一个字节,中断完毕后,主体程序从堆栈中提取中断前的状态,从而忽略了中断中的操作。而在有RTOS中时,我们都会进行关中断操作。注意,这个目前还只是猜想。没有切实验证过。...原创 2021-04-23 16:04:02 · 138 阅读 · 0 评论 -
二、stm32f103+enc28j60
1、ENC28J60 简介 ENC28J60 是带有行业标准串行外设接口(Serial Peripheral Interface,SPI)的独立以太网 控制器。它可作为任何配备有 SPI 的控制器的以太网接口。ENC28J60 符合 IEEE 802.3 的全部 规范,采用了一系列包过滤机制以对传入数据包进行限制。它还提供了一个内部 DMA 模块, 以实现快速数据吞吐和硬件支持的 IP 校验和计算。与主控制器的通信通过两个中断引脚和 SPI 实现,数据传输速率高达 10 Mb/s。两个专用的引脚用于连接原创 2021-03-30 09:16:35 · 726 阅读 · 0 评论 -
stm32 独立看门狗和窗口看门狗区别
原文地址https://www.cnblogs.com/pertor/p/9483445.html一、使用调条件二、特点对比三、手册介绍【注】图中的WDGTB为3表示2^3=8,表示8分频,最小时间910us也等于每次计数器减一所需要经过的时间:T(LSB),每隔910us减1。最大值也等于,设置重载(喂狗)值127时(最大),一个复位周期的时间就是最大值58.25ms,也就是所能维持进入复位的最大时间。由于窗口看门狗使用的APB1的PCLK1,时钟最高36...转载 2020-12-12 08:33:04 · 753 阅读 · 0 评论 -
stm32使用rtc到底用LSI还是LSE
最近有客户反映使用stm32RTC,在VDD断点以后VBAT会给RTC继续供电。但下次上电以后发现RTC的值没变,和断电前的值是一样的。也就是断点的期间rtc是没有走动的。这其实很简单,vbat只能给LSE供电而不能给LSI供电。vdd断了以后LSI也相当于断电了,rtc自然就不走了。但是rtc的寄存器有VBAT供电,所以它的值会一直保留。那么在使用stm32rtc的时候到底是选用LSI还是LSE。首先要考虑的问题就是vdd断电以后rtc需不需要继续走动,如果需要智能选择LSE;然后考虑时钟的精度需不...转载 2020-12-11 09:09:11 · 4253 阅读 · 0 评论 -
STM32F103+UCOS-II 实现临界区不关闭重要中断
使用stm32时,在ucos进入临界区代码时,我们需要关闭掉中断,出临界区后再开启中断。使用如下代码:#define OS_CRITICAL_METHOD 3#if OS_CRITICAL_METHOD == 3#define OS_ENTER_CRITICAL() {cpu_sr = OS_CPU_SR_Save();}#define OS_EXIT_CRITICAL() {OS_CPU_SR_Restore(cpu_sr);}#endif那如果我们用到某些中断需要快速原创 2020-09-24 11:39:24 · 906 阅读 · 0 评论 -
C语言 联合体使用技巧之位带操作
1.联合体union当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的:1)联合体是一个结构;2)它的所有成员相对于基地址的偏移量都为0;3)此结构空间要大到足够容纳最"宽"的成员;4)其对齐方式要适合其中所有的成员;具体使用方式如下,直接看代码:typedef union SYSTEM_FAULT{ uint16_t all; struct { u原创 2020-08-08 09:39:31 · 3154 阅读 · 0 评论 -
3、以太网基础知识——ARP地址解析协议原理
ARP地址解析协议原理概述地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地址与物理地址的转化,它包含在ICMPv6中)。ARP协议提供了网络层地址(IP地址)到物.原创 2020-07-11 15:38:17 · 869 阅读 · 0 评论 -
ME3630模块常用指令介绍
1、基本指令AT+CPIN?该指令用于查询SIM卡的状态,主要是PIN码,如果该指令返回:+CPIN:READY,则表明SIM卡状态正常,返回其他值,则有可能是没有SIM卡。AT+CSQ该指令用于查询信号质量,返回ME3630模块的接收信号强度,如返回:+CSQ: 24,0,表示信号强度是24(最大有效值是31)。如果信号强度过低,则要检查天线是否接好了?AT+COPS?该指令用于查询当前运营商,该指令只有在连上网络后,才返回运营商,否则返回空,如返回:+COPS:0,0, "CHI原创 2020-07-09 09:00:34 · 3853 阅读 · 1 评论 -
STM32硬件错误(HardFault_Handler)位置判断
1、在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。1.2在Keil菜单栏点击“View”——“Registers Window”,在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,继续查看MSP(主堆栈指针)的值,如果R14(LR) = 0xFFFFFFFD,继续查看PSP(进程栈指针)的值。我的程序R14(LR) = 0xFFFFFFF9,接下来以此为例。1.3在Keil菜...转载 2020-07-03 16:41:22 · 2974 阅读 · 0 评论 -
I2C总线协议详解
1 I2C总线物理拓扑结构I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485也为半双工,SPI和uart为双工。2 I2C总线特征 I2C总线上的每一个设备都可以作为主设备或者从设备,...转载 2020-06-30 10:34:30 · 224 阅读 · 0 评论 -
I2C上拉电阻设计
I2C上拉电阻 在一些PCB的layout中,大家往往会看到在I2C通信的接口处,往往会接入一个4.7K的电阻,有的datasheet上面明确有要求,需要接入,有的则没有要求。 I2C接口 对于单片机来讲,有些IO内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,这是对于单片机带有标准I2C通信协议接口,若是只带有模拟I2C协议接口,那么就需要考虑接入上拉电阻问题。下图是摄像头进行配置通信时SCL和SDA需要进行上拉电阻的连接。 在大多数情况下,由于I2C接口采用Open...原创 2020-06-30 08:44:15 · 1667 阅读 · 0 评论