stm32f103

STM32f103的TFTLCD和FSMC的使用

社会主义新天地 提交于 2019-12-01 06:59:18
多功能采集显示平台将通过 STM32 的 FSMC 接口来控制 TFTLCD 的显示,所以本节分为两个部分,分别介绍 TFTLCD 和 FSMC 。 TFT -LCD 即薄膜晶体管液晶显示器。其英文全称为: Thin Film Transistor-Liquid Crystal Display 。 TFT - LCD 与无源 TN - LCD 、 STN - LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管( TFT ),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。 TFT -LCD 也被叫做真彩液晶显示器。 FSMC ( Flexible Static Memory Controller ,可变静态存储控制器 ) 是 STM32 系列采用一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。 多功能采集显示平台使用的 LCD 的驱动芯片是 ILI9325 ,有一个 16 位的变址寄存器( IR )、一个 18 位的写数据寄存器( WDR )和一个 18 位的读数据寄存器( RDR )。变址寄存器( IR )存储来自控制寄存器和内部的 GRAM 的指令信息。写数据寄存器( WDR )用来暂时存储要被写到控制寄存器和内部的 GRAM 中的数据

STM32F103按键操作的另一种实现——状态机

◇◆丶佛笑我妖孽 提交于 2019-11-30 06:16:52
#ifndef _KEY_H_ #define _KEY_H_ #include "HAL_gpio.h" // 换成STM32F103对应的GPIO库 #include "type.h" // type.h主要是一些类型的重命名 #define KEY_UP_GRP GPIOA #define KEY_UP_IDX GPIO_Pin_9 #define KEY_UP_IS_DOWN() GPIO_ReadInputDataBit(KEY_UP_GRP, KEY_UP_IDX) #define KEY_UP_CONFIG() GPIOConfig(KEY_UP_GRP, KEY_UP_IDX, GPIO_Mode_IPU) // 这个函数我在之前帖子里面写过 #define KEY_DOWN_GRP GPIOA #define KEY_DOWN_IDX GPIO_Pin_10 #define KEY_DOWN_IS_DOWN() GPIO_ReadInputDataBit(KEY_DOWN_GRP, KEY_DOWN_IDX) #define KEY_DOWN_CONFIG() GPIOConfig(KEY_DOWN_GRP, KEY_DOWN_IDX, GPIO_Mode_IPU) #define KEY_FUNC_GRP GPIOA #define KEY_FUNC_IDX

STM32F103之NRF24L01的发送 接收调试,多通道接收等总结与反思

萝らか妹 提交于 2019-11-30 02:46:26
问题4:是否可以一对多相互通信? 答:可以。nrf24l01最多一对几个呢?答案是无数个!官方手册上说,nrf24l01可以一对六,指的是自身的通道有6个,而且这种模式只能是,不能1发6收。所以我们一般不用这种方式。我们一般只用nrf24l01的通道0,通过改变频道和地址来实现1对多的互发。它属于2.4G芯片,1收6发 但实际上,可以在2.4G到2.5G之间的频道上通信,一共有126个频道,它的地址是5字节的。所以用这种方式,可以实现一对无数的通信。实际上由于环境中的各种干扰,太多了就乱了,可以设置频率间隔大些,所以也是有限制的。 问题5:实现一对多通信的一种最常用的办法 一对多,最常用的办法就是跳频通信,其实就是换频道。原理:假设现在1对10通信相互收发数据,给10个节点的NRF24L01设置为不同的频道,如10 20 30 ……主机的NRF24L01,要想获得某个节点的数据,就设置为某个节点的频道,然后收发数据,完成以后,可以再去和另外一个节点通信。由于单片机运行速度快,依次获取10个节点的数据,非常快,瞬间完成。 来源: CSDN 作者: Heroanita 链接: https://blog.csdn.net/qq_31530791/article/details/80720102

STM32F103输入捕获的实现

时间秒杀一切 提交于 2019-11-29 15:06:57
目的:实现对边沿信号的捕捉并及时,可用作计算脉宽,或者频率等功能; 需要外设:TIM8 需求:测量TIM8_CH2的输入频率; 操作:   1.配置TIM8外设;   2.读取两次下降沿的时间间隔 1.编写相关函数 // IO口的配置 void IO_Init(void) { RCC->APB2ENR |= 1<<4; //使能GPIOC时钟 GPIOC->CRL &= 0X0FFFFFFF; //清除GPIO PC7的配置; GPIOC->CRL |= 0X40000000; //PC7浮空输入 } //定时器8配置 //定时器8配置为输入捕获模式 //开启APB2中TIM8时钟 //设定分频1Mhz ,计数值为65535 //使能CH2 ,IC2 //允许到CCR2中 void TIM8_INIT(u16 arr, u16 psc){ RCC->APB2ENR |= 0x00002000; //TIM8时钟使能 TIM8->ARR = arr; TIM8->PSC = psc; TIM8->CCMR1 |= 1<<8; //IC2映射到CH2上 TIM8->CCMR1 |= 0<<10; //IC1输入捕获无预分频 TIM8->CCMR1 |= 0<<12; //输入捕获无滤波 TIM8->CCER |= 0<<5; //上升沿捕获 TIM8->CCER |= 1<<4; /

NBiot M5311模组+STM32F103调试

拟墨画扇 提交于 2019-11-29 06:33:06
M5311模组+STM32F103的调试,主要问题在串口,只要串口通信没问题,其它的都是AT指令搞定的。 首先搞定STM32F103的USART,我用的是USART1,初始化如下 void uart_init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE); //USART1_TX PA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); //USART1_RX PA.10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO

踏入物联网第一篇——STM32F103开发板接入阿里云IOT平台

Deadly 提交于 2019-11-27 17:04:57
刚开始学习物联网,在研究STM32的路上记录下心得!!! 最近入手了一块STM32F103的板子,顺手就研究了下 如何通过MQTT协议连接阿里云物联网平台。 开发板是STM32F103C8T6 芯片是移远BC26,温湿度传感器是DHT11 ,开发板自带SIM卡槽,我用的是移动的NB-iot物联卡(稍微吐槽下,nb卡的信号是真的不好)。 说是接入阿里云物联网平台当然要先去阿里云物联网平台上注册一个设备了, https://iot.aliyun.com/ 阿里云IOT地址 1.我们先新建产品 注意:我们联网方式选蜂巢(2G/3G/4G),数据格式为JSON 然后我们在功能定义里添加温度,湿度, 注意标识符的写法,后期传递数据有用。 然后 我们再在产品里面添加设备,然后会得到设备三元组ProductKey DeviceName DeviceSecret 接着打开我们的代码(资源在 https://download.csdn.net/download/weixin_40923590/11120197 ) 将刚刚得到的设备三元组填入我们的代码中,记得修改传递数据用的标识符 然后编译,烧录,重置设备,打开串口看运行状态,如果信号不好的话,举高点或者重置设备 好了 数据已经顺利上传到阿里云物联网平台了 由于刚刚踏入物联网,记录下学习过程,由于不太懂开发板,所以板子是在淘宝上买的。 来源: