推荐阅读最新更新时间:2024-03-16 14:31
stm32专题十六:IIC(三)stm32 IIC 固件库函数分析
因为I2C通讯非常重要,因此要详细的分析每一个库函数 IIC初始化结构体 /** * @brief I2C Init structure definition */ typedef struct { // 指定时钟频率,这个值不能超过400kHz uint32_t I2C_ClockSpeed; /*! Specifies the clock frequency. This parameter must be set to a value lower than 400kHz */ // IIC模式:可以有3种选择:I2C_Mode_I2C I2C_Mo
[单片机]
stm32 外部中断的使用(含实例)
中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51单片机时代,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断,但是在STM32中,中断数量大大增加,而且中断的设置也更加复杂。今天就将来探讨一下关于STM32中的中断系统。 1 基本概念 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字
[单片机]
STM32 在 keil 环境下如何使用 cm_backtrace进行错误追踪
引言 我们在平常使用STM32单片机的时候,往往会碰到程序跑飞的情况,出现hard_fulat等错误,而我们在定位错误的时候,采用的方法往往是连上仿真器,一步一步单步调试,定位到具体的错误代码,再去猜测、排除、推敲错误原因,这样一个过程很是痛苦,而且在实际情况中,很多产品真机调试时必须断开仿真器或者说,问题确实存在,但是极难出现,所以在基于这样一个问题背景下,RTT 的大佬armink开发了一个基于 ARM Cortex-M系列的 MCU错误追踪库,用于帮助开发者解决上述问题。 CmBacktrace 的作用及适用平台 首先,CmBacktrace 是一款针对于 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位
[单片机]
STM32的ADC编程方法总结
这里的ADC转换也来使用DMA---这个也是STM32的ADC转换最常见的方式。 第一步是了解STM32的ADC对应的GPIO口如下图不用记住,可以查询,我是将它剪下来粘贴到书本的相应章节! 第二步是配置相应ADC转换的GPIO口这里使用PC0--PC1 static void ADC1_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //打开DMA1的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 “ RCC_APB
[单片机]
ucos-ii和ucgui在stm32上的移植及工程
uc/os-ii移植笔记 (此部分参考了tomato的介绍) os_cpu.h 与编译器相关的数据类型 typedef unsigned char BOOLEAN; typedef unsigned char INT8U; /* Unsigned 8 bit quantity */ typedef signed char INT8S; /* Signed 8 bit quantity */ typedef unsigned short INT16U; /* Unsigned 16 bit quantity */ typedef signed shor
[单片机]
STM32中断挂起和RTOS任务挂起的区别
中断挂起 可以理解为:将中断设置为就绪状态,一旦符合条件,立即执行中断并进入中断函数;比如A和B的抢占优先级相同,A的响应优先级高于B,那么当产生A和B中断的事件发生时,先执行A,并同时将B挂起,一旦A执行完毕,立即执行B。 RTOS的任务挂起 以FreeROTS为例,因为某些原因不能立即执行的任务,可以将其挂起,这个挂起使得任务暂时无法参与任务调度。只有将任务唤醒之后才能继续参与;
[单片机]
STM32学习笔记:ESP8266模块(1)
由于项目要求要涉及到物联网,公司要采用wifi 于是就采购了一块串口wifi模块,ESP8266 开始拿到后首先应该掌握的就是测试,熟悉AT指令,因为串口wifi通信是采用AT指令进行通信的, 在这里需要注意一点的就是:在编写程序的时候,一个串口(usart2)连接ESP8266,另一个串口(USart1)通过USB-TTL连接PC机查看输出信息, bool ESP8266_Cmd ( char * cmd, char * reply1, char * reply2, u32 waittime ) { strEsp8266_Fram_Record .InfBit .FramLength = 0; //从新开始
[单片机]
stm32的八种GPIO配置模式
1. 模拟输入; 2. 浮空输入; 3. 上拉输入; 4. 下拉输入; 5. 开漏输出; 6. 推挽输出; 7. 复用开漏输出; 8. 复用推挽输出 具体的: 1.模拟输入 从上图我们可以看到,我觉得模拟输入最重要的一点就是,他不经过输入数据寄存器,所以我们无法通过读取输入数据寄存器来获取模拟输入的值,我觉得这一点也是很好理解的,因为输入数据寄存器中存放的不是0就是1,而模拟输入信号不符合这一要求,所以自然不能放进输入数据寄存器。该输入模式,使我们可以获得外部的模拟信号。 2.浮空输入 该输入状态,我的理解是,它的输入完全由外部决定,我觉得在数据通信中应该可以使用该模式。应为在数据通信中,我们直观的理解就是线路两端连接着发送端
[单片机]