摘要:
IIC: IIC总线的工作速度分为3种版本: S(标准模式):100Kbps,即 100/8 = 12.5KB/s F(快速模式):400Kbps,即400/8 = 50KB/s HS(高速模式):3.4Mbps,即3.4M/8 = 435KB/s 具体使用什么工作速度看器件手册。 Tip: KBp 阅读全文
摘要:
这是正点原子TFTLCD的驱动通过CubeMx的简单工程进行移植并且点亮屏幕。 首先需要看原理图,将涉及到的IO口添加进定义中,手动添加亦可。 其次,工程需要添加mylcd.c, mylcd.h,和字库文件font.h。 mylcd.c #include "mylcd.h" #include "st 阅读全文
摘要:
在cubemx中的设置。 默认即可。 在main中添加代码。 HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, 2048); 在main()函数中添加程序设置DAC输出的数据为12位右对齐,数值为2048.则实际输出的电压为 2048/4 阅读全文
摘要:
多通道的adc就是检测多个通道的电压值,用dma来检测。 cubemx中设置如下。 Number of conversion 的个数就是该adc中要使用的通道数。在下面的rank中设置通道的采样时间和通道名字。 使能adc的中断。 在DMA设置中设置模式为循环模式,不然不设置的话只能用一次DMA。数 阅读全文
摘要:
在cubemx中进行设置。 模式设置成Independent mode, Date Alignment设置为数据右对齐。 右对齐跟左对齐的区别:12位二进制最大值为 0x0FFF 左对齐操作后的结果是 0xFFF0,右对齐后还是0x0FFF。反过来看 ,若寄存器里左对齐的数据值X (相当于实际数据* 阅读全文
摘要:
在需要用到显示功能的代码中,用printf写法会快很多。 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式 void _sys_exit(int x) { x = x; } //重定义fputc函数 int 阅读全文
摘要:
上一次我们通过HAL库的串口中断回调函数,基本能够实现简单的不定长度读写收发的功能。这一次用DMA来实现,先了解一下DMA。 DMA 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。 D 阅读全文
摘要:
要实现的是用PWM实现呼吸灯的效果。 先简单说一下原理,比如对一个电灯来说,你在1秒内,打开开关0.5秒,再关闭0.5秒,如此反复,那么电灯就会闪烁,但是如果是1毫秒内,0.5毫秒打开,0.5毫秒关闭,由于视觉暂留作用,也可能由于灯光的亮灭速度赶不上开关速度(还没全亮就又没电了),于是人眼不感觉电灯 阅读全文
摘要:
从串口中断,到外部中断再到现在的定时器中断,越来越感觉HAL库应用比较好用,虽然一开始理解上面有点怪,但是网上查询一下就能够学会。 定时器中断分为两个重点,1、在应用CUBEMX时配置定时器的分频数以及时钟树设置 2、生成初始化代码后添加的相关函数 auto-reload 自动重装值,使能与否都可以 阅读全文
摘要:
这次外部中断是通过检测外部中断实现按键控制LED的开关。 每一个IO口都可作为外部中断口,将你要外部中断的IO口在CUBEMX中进行设置。 中断线能够自动识别,不用手动去改动。其他基本设置好之后,即完成了外部中断的初始化。此时要进入中断函数,印象中大家的外部中断函数应该是这个, 但是在HAL库文件中 阅读全文