推荐阅读最新更新时间:2024-03-16 15:26
STM32开发笔记83: SX1268驱动程序设计(芯片复位)
单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片复位驱动程序。 一、数据手册 1、NRESET是芯片第15引脚,低有效。 2、通过15引脚NREST,可以达到完整的芯片复位。复位后,会执行标准的校准程序,先前的内容将丢失。复位最短时间为50us,给100us较为合适。 3、这张图是芯片各个模式的引脚的状态表,可以看到除复位模式外,其余模式NREST引脚的状态都为IN PU,其意思是输入上拉,其上拉值为50K。 二、程序 1、由于其内部上来,我们可以给出低功耗的程序,不将单片机控制NREST的引脚设置为输出,而设置为analog引脚,程序如下: c
[单片机]
STM32 串口详解
01、USART的特点 USART是通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx和Tx)就可以完成通信过程,因此也称为异步串行通信。 全双工异步通信。 小数波特率发生器系统,提供精确的波特率。 可配置的16倍过采样或8倍过采样,因而为速度容差与时钟容差的灵活配置提供了可能。 可编程的数据字长度(8位或者9位); 可配置的停止位(支
[单片机]
stm32的IO重映射
图片内容来自《电子系统设计与实战 stm32+FPGA控制版》 下面调用GPIO_PinRemapConfig(GPIO_Remap_SPI1,ENABLE);直接就把SPI1的所有IO换成了映射IO。
[单片机]
stm32设置唯一MAC地址
stm32参考手册中指出,在地址为0x1FFFF7E8处,有一个唯一的身份标识寄存器。 可以直接访问该值。 printf( rnChip ID: %x, %x, %xrn , *(vu32*)(0x1ffff7e8), *(vu32*)(0x1ffff7e8+4), *(vu32*)(0x1ffff7e8+8)); Chip ID: 5d8ff39, 36364e4e, 43137403 虽然这个96bit的ID是唯一的,但是MAC地址却只有48bit,因为量产有不同批次,而且采购的很随机的话这个ID号也是不唯一的,比较靠谱一点的还是自己在指定FLASH位置定义一个变量,这样程序就写死去读这个地方的值,而这个地
[单片机]
STM32 OLED相关笔记(库函数)
参考资料:正点原子STM32不完全手册OLED章节 有机发光二极管(Organic Light-Emitting Diode, OLED) 0.OLED不需要背光源,对比度高,注意:电压为3.3v,支持SPI 8080 6800 和iic 1.基于SSD1302芯片,一般为128*8*8的规格,称为12864 对于SSD1302芯片的操作: 0X81:设置对比度,包含两个字节,第一个0X81为命令,然后发送一个值来设置对比度,设置的值越大,则屏幕越亮(0X00--0XFF) 0XAE,0XAF:为关闭显示和开启显示 0x8D:为电荷泵的命令值,后面包括一个设置值,第二个字节的A2位表示是否开启电荷泵(0为关闭,1为开启
[单片机]
一个关于STM32定时器的CCR清零话题
今天跟大家分享一个STM32应用开发过程中操作CCR寄存器遇到的小案例,是关于STM32定时器中的捕获寄存器清零的问题。 有人用STM32做输入捕获,在捕获的回调函数里先将捕捉到的CCR值放入缓冲区,然后打算将CCR寄存器清零。结果发现根本清不了。相关代码如下【基于STM32cube库】: voidHAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if (htim- Instance == TIM4) { if (htim- Channel == HAL_TIM_ACTIVE_CHANNEL_1) { ccr_cur =__HAL_TIM_GE
[单片机]
STM32系列里RTC的亚秒特性及功能(上)
绝大多数STM32系列里的RTC都具有亚秒【或称子秒】计数单元。为了了解亚秒特性及功能,不妨先看RTC的功能框图。本文中的有关截图若无特别说明均来自STM32L4系列参考手册。 RTC的时钟源【RTCCLK】可以是LSE、LSI或者HSE/32,由RTCCLK最终变成日历的秒脉冲驱动信号经过了2次分频。先经过上图中A处的异步分频单元,默认分频系数是128,形成ck_apre时钟,默认情况下该时钟频率为256Hz;然后该时钟脉冲来到图中B处的同步分频单元,默认分频系数为256,最终形成1Hz的秒脉冲【ck_spre】到日历单元。关于两分频单元分频系数的配置,通过对RTC_PRER寄存器的相关位编程实现。 其中异步分频系数配
[单片机]
关于STM32存储的堆栈地址
由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放 4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 STM32的地址
[单片机]