- 博客(14)
- 资源 (7)
- 收藏
- 关注
原创 APM32使用I2C驱动OLED
本次实验主要讲APM32的I2C外设的初始化和APM32作为主机如何发送数据,OLED的驱动写起来较难本次实验不涉及。通信速率,这个值主要根据从机来选,我们要填的参数要小于从机所支持的最高通信速率。I2C需要两个GPIO,一个作为SCL,另一个作为SDA,IIC的GPIO和其他外设配置就一个点不太相同,我们这里选I2C模式,另外两个位系统管理总线,主要用在PC上。主机地址,这个地址可以随便填,但是不能和其他设备地址相同,要保证唯一性即可。这个要根据从机来选,一般还是7位的多,我们这里选。
2024-11-30 16:58:27
1021
原创 APM32使用DMA方式进行ADC采集
上一篇文章已经讲过软件触发ADC采集,中断读取数据,这一套流程都需要CPU亲自去做,我们这次的实验请来一个打工人(DMA)来帮忙做这一套流程,CPU只需要对数据进行处理即可。外设基地址:这个外设的地址一般填各种外设的数据寄存器地址,因为一般的数据的传输方向为外数据设寄存器到数组或者数组到外设数据寄存器。储存器基地址:这个地址一般填我们自己设置的数组的地址,DMA主要就是把数据搬到外设数据寄存器或者把外设数据寄存器的数据搬到我们自己设置的数组。,把ADC读到数据搬到我们自己的创建的数组中。
2024-11-22 14:30:18
1976
1
原创 APM32端口重映射
我们都知道APM32单片机的GPIO不仅可以用来输出和检测高低电平,而且其他外设(如USART、TMR、ADC等)在运行过程中也会使用到这些GPIO,每个GPIO都会有一些默认的复用功能,如下图。完全重映射,有的地方也叫完全重映像,都差不多。当重定义功能只有一种时,就是完全重映射,如下图。知道完全重映射就很容易理解部分重映射,重定义功能不只有一种就是部分重映射,如下图。红框中每个引脚的重定义功能只有一个,所以时完全重映射,我们来看下如何编程。如果我不想用默认复用的功能,想用重定义的功能,该怎么编程?
2024-11-18 16:11:29
776
原创 6.APM32-TMR-通用定时器呼吸灯
我们来解释下预装载功能,启用预装载功能后若要改变比较值,新的比较值会在定时器更新事件后起作用,若不启用预装载功能,更改比较值后会立马启作用。我们这次主要用到PWM模式1和PWM模式2,但奈何APM32这里的手册解释不好,我们还是来看下stm32的参考手册如何解释的,如下图。发光二极管的亮度主要由流过它的电流决定,VCC的电压是固定的,当我们不停的改变PC8端口的电压就可以实现呼吸灯的效果。看到这些参数肯定一头雾水,都是干啥用的?其他的参数就不介绍了,其他的参数都是高级定时器中的,平时也用不到。
2024-11-16 10:23:34
731
原创 5.APM32-TMR-基本定时器定时
我们设置成71,实际分频(71+1),经过分频后,计数频率变为1MHz,至于这里为什么要加1?bsp_base_tmr.h该文件里都是各种宏定义我们就不看了,我们主要来看bsp_base_tmr.c文件中的内容。,我们内部时钟频率为72MHz,设置成TMR_CLOCK_DIV_1,分频后频率为72MHz。在讲这些参数怎么选之前我们先来看下基本定时器的结构框图,参考手册197页,结构框图如下。基本定时器的时钟源只有内部时钟,内部时钟经过。,因为基本定时器只有向上计数模式。,开启中断后还要配置下NVIC,
2024-11-14 14:49:46
1106
原创 APM32实现printf串口打印
在Keil环境中使用printf,首先需要打开Use MicroLib,这个库是keil专门为嵌入式设备定制的,比C语言自带的库如stdio、string等占用空间更小,效率更高。:GCC、IAR环境的重定向和Keil不一样,不能使用上述代码。把Use MicroLib打上勾,如下图。首先要点击Keil的魔术棒,如下图。,在Keil中串口重定向的如下。
2024-11-12 17:52:23
406
原创 4.APM32-USART-串口接发
接收标志位置位后,如果已经接收的到数据大小小于接收缓冲区的大小就继续接收,将接收到的数据Temp放在缓冲区中,否则的话将接收到数据的大小置零,下次接收时会覆盖前面已经接收的数据,如果接收到换行符也就是回车,它的ASCII码是10对应的十六进制就是0x0A。我们之前说过,一个中断函数可以给很多中断用,我们要具体判断是哪一个中断发生了,我们要去读取中断的状态,我们这次用的中断是接收寄存器不为空中断,还有很多其他中断,如下图。声明了三个变量,RxFlag时接收标志位,置位时表示接收到数据;的写操作,将清零该位。
2024-11-11 16:34:32
2126
原创 3.APM32-EINT-按键检测
R13为下拉电阻,使PB13端口默认电压为低电平,LL4148为续流电阻,由于蜂鸣器是电感性元件,所以当三极管处于截止状态时需要二极管LL4148进行续流,否则可能会烧毁器件。由该原理图可知,按键按下时按键输出低电平,为了检测按键输出的高低电平所以APM32的GPIO要设置为输入模式,同时为了防止外部干扰,GPIO模式可设置成上拉模式,也可以在电路原理图上加一个上拉电阻,这样当按键没按下时就呈现高电平。由此看出官网提供的库也是会有错误的,比如这个注释,返回值为None,很明显的错误。
2024-11-08 16:24:15
754
原创 智能仪表课程作业【SHTXX温湿度测量的Proteus仿真】合集
智能仪表作业,旨在通过手册和先有资料进行SHTXX的代码读写,了解现在数字传感器的应用,了解和掌握I2C 总线的实际应用。
2024-11-03 12:24:34
332
一个51上的fat完整代码
2012-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人