通过STMPE811的原理图要了解以下几点: I2C的两根通信线I2C_SCL和I2C_SDA的上拉电阻在V7的主板上。 ...触摸芯片已经集成到柔性PCB上,且已经校准好。用户使用的话,直接通过I2C方式读取数据即可。下面是电容触摸板引出的引脚: ? 注意I2C_SDK和I2C_SCL的上拉电阻在V7主板上。...)将当前的X轴和Y轴ADC数值转换成实际的坐标值,然后调用函数TOUCH_PutKey将当前的坐标信息存储到FIFO里面。 ...第41行检测到有按下的话,会连续读取5次,确保已经按下了,然后标记本次按下得到的ADC数值。根据执行的是4点触摸校准还是2点触摸校准,这个操作会执行4次或者2次。 ...根据这几个消息,用户可以在程序里面判断当前获取的物理坐标值是否在设置的区域内来执行触摸操作。
5.3 电阻屏硬件设计 电阻触摸STMPE811的原理图如下: 通过STMPE811的原理图要了解以下几点: I2C的两根通信线I2C_SCL和I2C_SDA的上拉电阻在V7的主板上。 ...下面是FT5X06和GT911触摸板效果(触摸板和触摸芯片是一体的): 触摸芯片已经集成到柔性PCB上,且已经校准好。用户使用的话,直接通过I2C方式读取数据即可。...下面是电容触摸板引出的引脚: 注意I2C_SDK和I2C_SCL的上拉电阻在V7主板上。 5.5 电阻触摸驱动设计 下面将电阻触摸程序设计中的相关问题逐一为大家做个说明。...)将当前的X轴和Y轴ADC数值转换成实际的坐标值,然后调用函数TOUCH_PutKey将当前的坐标信息存储到FIFO里面。 ...第41行检测到有按下的话,会连续读取5次,确保已经按下了,然后标记本次按下得到的ADC数值。根据执行的是4点触摸校准还是2点触摸校准,这个操作会执行4次或者2次。
下面是FT5X06和GT911触摸板效果(触摸板和触摸芯片是一体的): 触摸芯片已经集成到柔性PCB上,且已经校准好。用户使用的话,直接通过I2C方式读取数据即可。...)将当前的X轴和Y轴ADC数值转换成实际的坐标值,然后调用函数TOUCH_PutKey将当前的坐标信息存储到FIFO里面。 ...第41行检测到有按下的话,会连续读取5次,确保已经按下了,然后标记本次按下得到的ADC数值。根据执行的是4点触摸校准还是2点触摸校准,这个操作会执行4次或者2次。 ...LCD界面显示效果如下: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用的DTCM: 硬件外设初始化 硬件外设的初始化是在...LCD界面显示效果如下: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用的DTCM: 硬件外设初始化 硬件外设的初始化是在
但只能操作16个引脚。 使用总线的优势就在这里了,相当于在GPIOA到GPIOK的基础上,又扩展出GPIOL和GPIOM。...操作LED的亮灭就是操作FMC的数据引脚D8,D9,D10和D11。 对地址0x64001000发送数据就可以了,但是如何对这个地址发送数据呢?...特别注意,这里是要操作地址0x60001000上的32位数据空间,即做了一个强制转换uint32_t *,要跟FMC配置时设置的位宽一致。这样做的原因,在第47章的2.6小节有说明。...FMC扩展引脚20和23的位置: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用的DTCM: 硬件外设初始化 硬件外设的初始化是在...FMC扩展引脚20和23的位置: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用的DTCM: 硬件外设初始化 硬件外设的初始化是在
值: 主要是TCP_EVT_CONREQ事件使用,返回数值1允许连接,返回数值0禁止连接。...值: 主要是TCP_EVT_CONREQ事件使用,返回数值1允许连接,返回数值0禁止连接。...15.6 网络调试助手和板子的调试操作步骤 我们这里使用下面这款调试助手,任何其它网络调试助手均可,不限制: http://bbs.armfly.com/read.php?tid=1568 。...三个都连接上后,串口软件也会打印出如下信息(波特率115200,数据位8,奇偶校验位无,停止位1): ? 15.6.5 TCP客户端发送数据 板子和网络调试助手建立连接后就可以互相收发数据了。...值: 主要是TCP_EVT_CONREQ事件使用,返回数值1允许连接,返回数值0禁止连接。
从结构上,Flash按扇区操作,EEPROM通常按字节操作。两者区别这里不再过多赘述,读者理解EEPROM在嵌入式中扮演的角色即可。...本开发板上的EEPROM型号为AT24C02,其存储容量为2K Bit,2*1024=2048Bit。...当前地址读模式就是在上一次读/写操作之后的最后位置,继续读出数据,比如上次读/写在地址n,接下来可以直接从n+1处读出数据;随机地址读模式是指定数据地址,然后读出数据;顺序读模式是连续读出多个数据。...在当前地址读模式下,无需发送数据地址,数据地址为上一次读/写操作之后的位置,时序如图 19.1.12所示,注意在结尾,主机接收数据后,无需产生应答信号。...多字节读写可以通过AT24Cxx的页写模式和顺序读模式,实现多个数据的连续读写。在页写模式时,需要程序上设置,不能跨页写,这里简单处理,直接多次调用前面的单次读写即可,如代码段 19.3.8 所示。
但只能操作16个引脚。 使用总线的优势就在这里了,相当于在GPIOA到GPIOK的基础上,又扩展出GPIOL和GPIOM。...操作LED的亮灭就是操作FMC的数据引脚D8,D9,D10和D11。 对地址0x64001000发送数据就可以了,但是如何对这个地址发送数据呢?...特别注意,这里是要操作地址0x64001000上的32位数据空间,即做了一个强制转换uint32_t *,要跟FMC配置时设置的位宽一致。这样做的原因,在第37章的2.6小节有说明。...FMC扩展引脚20和23的位置: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: 硬件外设初始化 硬件外设的初始化是在 bsp.c...FMC扩展引脚20和23的位置: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: 硬件外设初始化 硬件外设的初始化是在 bsp.c
在不需要任何补偿的情况下,误差可以做到正负1微秒以内。 TIM2和TIM5是32位定时器,而TIM3和TIM4是16位定时器。...第23行,将当前的计数值和延迟的计数值求和,这里有个隐含的知识点,就是两个数求和会有溢出的情况,溢出了会不会出问题,答案是不会的 对于32位定时器,如果两个32位变量求和超过范围,那么变量cnt_tar...定时精度正负1us(主要耗费在调用本函数的执行时间)。 函数参数: 第1个参数表示使用的捕获比较通道,数值范围1,2,3, 4,分别表示通道1,通道2,通道3和通道4。 ...FMC扩展引脚23的位置: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 实际执行时间测量: 在不做任何误差补偿的情况下,误差在正负1微妙内,下面是延迟5微妙的实际执行时间...FMC扩展引脚23的位置: 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 实际执行时间测量: 在不做任何误差补偿的情况下,误差在正负1微妙内,下面是延迟5微妙的实际执行时间
多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。...A0,A1,A2:硬件地址引脚 WP:写保护引脚,接高电平只读,接地允许读和写 SCL和SDA:IIC总线 可以通过存储IC的型号来计算芯片的存储容量是多大,比如24C02后面的02表示的是可存储2Kbit...所以A2~A0默认为000,最后一位表示读写操作。所以AT24Cxx的读地址为0xA1,写地址为0xA0。...所以,当我们在写多个字节时,写入一个字节之后,再写入下一个字节之前,必须延时5ms才可以 从AT24C02中读数据 1,读当前地址的数据 2、读随机地址的数据 MCU先发送一个开始信号... */ 功能: IIC写多个数据 该函数适用于IIC外设里面还有子地址寄存器的设备,比方说E2PROM,除了设备地址,每个存储字节都有其对应的地址 参数: *hi2c: I2C设备号指针,设置使用的是那个
(5)使用存储设备函数GUI_MEMDEV_Draw绘制还是多缓冲函数GUI_MULTIBUF_Begin()和GUI_MULTIBUF_End()。...); 在函数_Draw里面实现波形显示区和波形的绘制,但是速度比较慢,600*480显示区的刷新率差不多10帧左右,现在做二代示波器显然不能再使用这种方法了,速度太慢,而且实际测试发现F429使用这种方式比一代示波器中...后来干脆关闭PWM,而且也关闭emWin和LCD的图层,仅显示背景层,直接操作PWM引脚的高低电平。...知道了这个原因,程序中就好解决了,可以直接延迟200ms后再点亮,而这个二代示波器无需这么做,因为上电后需要将各种测量窗口的背景和波形显示区背景绘制到存储设备里面,正好用于替代者200ms延迟。...对话框回调函数的WM_PAINT消息里面通过大量的2D函数进行绘制,每次刷新数值还是比较影响系统性能的,为了降低影响,需要提前将其绘制到存储设备里面,跟本章节5.2小节的方法类似。
检测SP3232E的好坏可以采用回环的方式,即短接T1OUT和R1IN,对应到DB9插座上就是短接引脚2和引脚3。...检测串口线的好坏跟板子上的232 PHY一样,将电脑端的串口助手打开,串口线接到电脑端并短接串口线的2脚和3脚,然后使用串口助手进行自收发测试即可。...每个串口有两个FIFO缓冲区,每个FIFO对应一个写指针和一个读指针。这个结构中还有三个回调函数。回调函数就是一个通过函数指针调用的函数。...上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用的DTCM: 硬件外设初始化 硬件外设的初始化是在 bsp.c 文件实现...上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用的DTCM: 硬件外设初始化 硬件外设的初始化是在 bsp.c 文件实现
当BOOT0引脚和BOOT1引脚都接GND时,就是从这个地址开始运行代码的。这个地址在keil中可以看到: ?...我们这里使用按页擦除,固件库中按页擦除的函数为: FLASH_Status FLASH_ErasePage(uint32_t Page_Address); 其返回值为枚举: typedef enum {...32 位字节写入实际上是写入的两次 16 位数据,写完第一次后地址+2,这与我们前面讲解的 STM32 闪存的编程每次必须写入 16 位并不矛盾。...写入 8 位实际也是占用的两个地址了,跟写入 16 位基本上没啥区别。...(4)写入操作完成后进行上锁操作 对FLASH进行写操作完成后要进行上锁操作,对应的固件库中函数为: void FLASH_Lock(void); (5)读出数据 固件库中并没有与读操作的函数。
3、socket和监听的关系: (1)创建的一个socket只能创建一个监听。 (2)创建的一个socket不能够监听多个 。 ...13.5.1 创建TCP服务器 TCP服务器的创建比较简单,调用函数tcp_get_socket即可,此函数的使用和注意事项在本章的13.2.1小节有讲解: /* ******************...数据发送所用到函数的使用方法和注意事项在本章节的13.2小节有讲解。...13.6 网络调试助手和板子的调试操作步骤 我们这里使用下面这款调试助手,任何其它网络调试助手均可,不限制:http://bbs.armfly.com/read.php?tid=1568 。...连接上后,串口软件也会打印出如下信息(波特率115200,数据位8,奇偶校验位无,停止位1): ? 13.6.3 TCP服务器发送数据 板子和网络调试助手建立连接后就可以相互收发数据了。对于发送数据。
当前程序使用的串口打印就是用的低功耗串口,即USART1和LPUART1都可以使用PA9和PA10。 上电启动了一个软件定时器,每100ms翻转一次LED2。...实验操作: K1键按下,进入停机模式,低功耗串口接收任意字节数据可以唤醒。 K2键按下,进入停机模式,低功耗串口检测到起始位可以唤醒。...K3键按下,进入停机模式,低功耗串口检测到地址0x99可以唤醒。 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1。...当前程序使用的串口打印就是用的低功耗串口,即USART1和LPUART1都可以使用PA9和PA10。 上电启动了一个软件定时器,每100ms翻转一次LED2。...实验操作: K1键按下,进入停机模式,低功耗串口接收任意字节数据可以唤醒。 K2键按下,进入停机模式,低功耗串口检测到起始位可以唤醒。
14.5.1 创建TCP客户端 TCP客户端的创建比较简单,调用函数tcp_get_socket即可,此函数的使用和注意事项在本章的14.2.1小节有讲解: /* ******************...数据发送所用到函数的使用方法和注意事项在本章节的14.2小节有讲解。...说完了裸机方式,下面说说RTOS方式的数据发送,这里我们以RTX操作系统为例进行说明(其它的uCOS-III和FreeRTOS的思路是一样的)。...14.6 网络调试助手和板子的调试操作步骤 我们这里使用下面这款调试助手,任何其它网络调试助手均可,不限制: http://bbs.armfly.com/read.php?tid=1568 。...连接上后,串口软件也会打印出如下信息(波特率115200,数据位8,奇偶校验位无,停止位1): ? 14.6.5 TCP客户端发送数据 板子和网络调试助手建立连接后就可以互相收发数据了。
,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。...25:0] 不论外部接8位/16位宽设备,FSMC_A[0]永远接在外部设备地址A[0] STM32的FSMC存储块1 支持的异步突发访问模式包括:模式1、模式A~D等多种时序模型,驱动SRAM时一般使用模式...对应芯片中的引脚呢,是这样的(有点多): 其中部分引脚的功能呢,前面也已经讲到了,这里不再重复 复位脚和单片机的复位是接到一起的,也就是整个系统的复位,在程序中并没有额外操作...Memory Type,存储类型,这里当然是选择LCD接口,那么里面还可以选择其他的存储类型,如果需要使用其他类型的存储设备也可以详细了解 4....if(lcddev.id==0X5761)lcddev.id=0X1963;//SSD1963读回的ID是5761H,为方便区分,我们强制设置为1963 } } } printf(
1.网络字节序与主机字节序 在Linux网络编程中,经常碰到网络字节序与主机字节序的相互转换。说到网络字节序与主机字节序需要清晰了解以下几个概念。 字节序,顾名思义,指字节在内存中存储的顺序。...字节序有两种: (1)小端字节序(Little endinan),数值低位存储在内存的低地址,高位存储在内存的高地址; (2)大端字节序(Big endian),数值高位存储在内存的低地址,低位存储在内存的高地址...下面以32位位宽数值0x12345678为例,小端字节序与大端字节序具体的存储区别如下所示: image.png 主机字节序,即CPU存储数据时采用的字节顺序。...平常大多数PC与服务器如果使用的是Intel与AMD CPU,一般都是little endian。 如何具体判断本机的主机字节序呢?...类型从网络序转换到主机序 uint16_t ntohs(uint16_t netshort); //把uint16_t类型从网络序转换到主机序 2.2 64位数值的转换 现在如果需要对64位类型数据进行主机字节序与网络字节序的转换
(2.7 - 5V 均可以) 3、输出电压可抵达正负10V 4、上电时缺省输出0V (在软件未启动时) 5、引出正负12V电源排针,方便客户使用 重要提示: 1、DAC8562和DAC8563完全兼容,...毛刺脉冲 0.1nV-s 上电复位数值0V或者中间值。...74.6.4 第4步:单SPI接口管理多个SPI设备的切换机制 单SPI接口管理多个SPI设备最麻烦的地方是不同设备的时钟分配,时钟极性和时钟相位并不相同。...摇杆上键按下,通道1停止方波,通道2停止输出。 摇杆下键按下,双通道输出直流。 摇杆OK键按下,重新初始化。 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1。...摇杆上键按下,通道1停止方波,通道2停止输出。 摇杆下键按下,双通道输出直流。 摇杆OK键按下,重新初始化。 上电后串口打印的信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1。
9.2.2 非特权级模式下核心外设寄存器如何初始化 如果用户将RTX操作系统的任务设置在非特权级模式下运行,那么核心外设寄存器应该放在哪里进行初始化呢,主要有以下两种方法: 使用SVC(Supervisor...在初始化和开启RTX多任务前做核心外设的初始化。...下面是两种操作模式和两种特权等级的关系: 中断和异常的区别 在 ARM 编程领域中,凡是打断程序顺序执行的事件,都被称为异常(exception)。...为了避免系统堆栈因应用程序的错误使用而毁坏,我们可以给应用程序专门配一个堆栈,不让它共享操作系统内核的堆栈。在这个管理制度下,运行在线程模式的用户代码使用PSP,而异常服务例程则使用MSP。...osRtxTimerThread任务 : 定时器任务,暂未使用。 串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1。
创建的一个socket不能够监听多个 。 创建多个socket可以创建多个监听。 创建多个socket可以仅创建一个监听。...操作缓冲区的时候,切不可超过申请的缓冲区大小。 不可以在TCP Socket的回调函数里面调用netTCP_Send。...数据发送所用到函数的使用方法和注意事项在本章节的11.2小节有讲解。...11.8 网络调试助手和板子的调试操作步骤 我们这里使用下面这款调试助手,任何其它网络调试助手均可,不限制: http://www.armbbs.cn/forum.php?...,奇偶校验位无,停止位1): 11.8.3 TCP服务器发送数据 板子和网络调试助手建立连接后就可以相互收发数据了。
领取专属 10元无门槛券
手把手带您无忧上云