IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 2021-11-09 -> 正文阅读

[嵌入式]2021-11-09

前言:

  • STM32的IO口标注FT的兼容5V,即接收到5V信号 也能识别
  • STM32启动模式 BOOT1、BOOT0(选择启动的程序来源,FLASH中代码&SRAM中代码)
  • 添加文件须 包含文件路径
  • RCC时钟初始化
  • 端口复用 :可用作通用IO口 也可复用为外设引脚? default(默认)
  • 端口映射 :方便PCB布线? remap(重映射)
  • 使用所有外设。都需要先使能相应时钟

1、模拟输入:专用于ADC通道的输入,输入信号为模拟信号。

2、浮空输入:输入信号为数字信号。数字信号直接跳过上下拉电阻,直接输入到IO逻辑电路。

3、下拉输入:输入信号为数字信号。由弱下拉电阻保持该引脚的电平为低电平。

4、上拉输入:输入信号为数字信号。

5、推挽输出:输出信号为数字信号。不仅能输出高低电平的信号,还有驱动电流的能力

6、开漏输出:输出信号为数字信号。不能驱动元器件,只是输出给外部一个1/0的高低电平信号。

7、复用推挽输出/复用开漏输出:在复用模式下使用,使用方法和上面一样。
?

一、跑马灯

?1.使能IO口时钟。调用函数RCC_APB2PeriphColckCmd(); ? ? ?

? ? 不同的IO组,调用的时钟使能函数不一样。 ?

2.初始化IO口模式。调用函数GPIO_Init(); ?

void LED_Init(void)
{

	GPIO_InitTypeDef  GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);	
    //使能PB、PE时钟
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB.5端口配置	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHZ
	GPIO_Init(GPIOB, &GPIO_InitStructure); //对PB.5进行初始化
	GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5输出高

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PE.5端口配置	  
	GPIO_Init(GPIOE, &GPIO_InitStructure);	  		
	GPIO_SetBits(GPIOE,GPIO_Pin_5); 			
}

3.操作IO口,输出高低电平。 ? ? ?GPIO_SetBits(); ? ? ?GPIO_ResetBits();

位操作 : 把一个比特膨胀为32位的字(每个比特对应一个地址)

二、蜂鸣器

  • IO直接连接蜂鸣器,IO输出电流小 驱动能力弱 ,无法带动蜂鸣器

1. 使能IO口时钟。调用函数RCC_APB2PeriphColckCmd();? ? ??

2.初始化IO口模式。调用函数BEEP_Init(); ?

void BEEP_Init(void)
{

	GPIO_InitTypeDef  GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能GPIOB端口时钟

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //PB.8端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //速度设置为50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);	 //根据参数初始化GPIOB.8

	GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出为0,关闭蜂鸣器

}

3.操作IO口,输出高低电平。

三、案件输出

1.使能按键对应IO口时钟。调用函数:?RCC_APB2PeriphClockCmd(); ?

2.初始化IO模式:上拉/下拉输入。调用函数:GPIO_Init(); ?

void KEY_Init(void) //IO口按键初始化
{ 
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);
    //使能PORTA、PORTE时钟

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY2
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置上拉输出
	GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE2,3,4

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}

3.扫描IO口电平(库函数/寄存器/位操作)。

四、时钟系统

启动文件中定义 先启动systeminit 然后调用main函数

五、滴答计时器

  • systick定时器,常用做延时或者实时系统的心跳信号
  • 一个24位的定时器,计到0,将从RELOAD寄存器中 自动重新装载定时初值

六、中断管理办法

系统代码执行过程中,仅设置一次中断优先级分组(避免中断混乱)

中断分为0~4组

每个中断设置 一个抢占优先级+一个相应优先级

七、串口通信

处理器与外部的通信方式

  • 并行通信 :数据各个位同时传输
  • 串行通信 :数据按位顺序传输

数据传输方向

  • 单工 :数据单向传输
  • 半双工 :数据双向传输(不能同时)
  • 全双工:数据能同时双向传输

时钟信号

  • 同步通信 :带时钟同步信号传输? -? SPI 、IIC
  • 异步通信 : 不带时钟同步信号? -? UART(通用异步收发器)、单总线(需约定波特率)

PS :UART? -? 通用异步收发器

? ? ? ? ?USART? -? 通用同步异步收发器

串口异步通信参数:

  • 起始位
  • 数据位
  • 奇偶校验位
  • 停止位
  • 波特率设置

串口配置

1.串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();

2.串口复位:USART_DeInit(); 这一步不是必须的

3.GPIO端口模式设置:GPIO_Init(); 串口参数初始化:

4.USART_Init();

5.开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) ? ? ?

NVIC_Init(); ? ? ? USART_ITConfig();

6.使能串口:USART_Cmd();

7.编写中断处理函数:USARTx_IRQHandler();

8.串口数据收发: void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

9.串口传输状态获取: FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:33:50  更:2021-11-10 12:33:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:18:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码