1.使用LED

使用GPIO 、锁存器

步骤:

1.开启时钟
2.初始化GPIO结构体(包括8个LED和锁存器)PC8~PC15、PD2

(模式:GPIO_Mode_Out_PP 推挽输出

3.写一个控制LED的函数

因为LED和LCD公用GPIO,因此如果每次写入的是某一个GPIO的位,其他LED可能会在锁存器打开时因改变了LCD的值使LED也发生改变,因此,每一次改变LED的亮灭,应设置所有的GPIO。通过调用函数 LED_Lit(uint8_t led) 实现。

void LED_Lit(uint8_t led)
{GPIO_Write(GPIOC,led<<8);GPIO_SetBits(GPIOD,GPIO_Pin_2);GPIO_ResetBits(GPIOD,GPIO_Pin_2);
}
4.定义一个LED的全局变量

因此控制LED的应该是一个全局变量,在改变LED时改变这个全局变量的相应位即可。

2.使用按键

控制按键一般是使用轮询或中断,由于轮询需要写按键扫描函数,所以这里介绍中断方式

使用GPIO 、EXTI、NVIC

步骤:

1.开启时钟(GPIOA、GPIOB、AFIO)
2.初始化GPIO结构体(4个按键)PA0、PA8、PB、PB2

(模式:GPIO_Mode_IPU 上拉输入)

3.初始化NVIC结构体

初始化NVIC就是在配置优先级

4.初始化EXTI结构体

需要使用"stm32f10x_gpio.h"中的函数GPIO_EXTILineConfig(GPIO_PortSourceGPIOA , GPIO_PinSource8);来配置每一个EXTI对应的GPIO引脚。

5.写中断服务函数

一般步骤是先判断是否有EXTI_Linex的中断发生;如果有,先延时20ms,然后进行操作,一般中断服务函数里不做太多的操作,都是修改相应的标志,然后在主函数里根据标志位进行操作;最后清除标志位。

3.使用UART

串行输入输出使用的是uart2(PA3–RXD,PA2–TXD),且最好也是使用中断方式进行判断。

使用GPIO 、NVIC、

步骤:

1.开启时钟(GPIOA)
2.初始化GPIO结构体PA2、PA3

(PA3模式:GPIO_Mode_IN_FLOATING 浮空输入)因为这里是接受字符,字符是0、1序列,所以应该是输入什么就接受什么,所以是浮空输入。
(PA2模式:GPIO_Mode_AF_PP 复用推挽输出)

3.初始化NVIC结构体

初始化NVIC就是在配置优先级

4.其他函数的调用
USART_Cmd(USART2,ENABLE);//打开uart
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//配置中断是 接受队列不为空时产生中断

(显然,当发送数据时是不需要中断的,直接发送出去即可。
只有在接受数据时,当计算机发送数据到开发板,开发板需要检测是否有数据接受。)
发送数据到计算机需要使用函数printf();将printf中调用的fputc()进行修改,则每次调用printf()即向计算机发送一次数据。

int fputc(int ch,FILE* file)
{USART_SendData(USART2,ch);while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);return ch;
}
5.中断处理函数(应该是接受数据时中断)

同样的,首先判断标志位USART_IT_RXNE是否发生;如果是,那么调用固件库函数USART_ReceiveData(USART2);接受一个字符,然后进行相应操作即可;最后清除标志位

4.使用EEPROM存储

使用GPIO 、I²C

(需要使用的函数考试时已经给出,直接调用即可,只需要写出俩个函数:写入EEPROM、读取EEPROM)
步骤:

写入EEPROM、读取EEPROM的函数
uint8_t EEPROM_Read(uint8_t adds)
{uint8_t data;I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(adds);I2CWaitAck();I2CStart();I2CSendByte(0xa1);I2CWaitAck();data=I2CReceiveByte();I2CWaitAck();I2CStop();return data;}
void EEPROM_Write(uint8_t adds,uint8_t data)
{I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(adds);I2CWaitAck();I2CSendByte(data);I2CWaitAck();I2CStop();
}

5.使用模拟输入ADC

(R37是PB0引脚 ,属于ADC,因此是模拟信号(模拟输入),且R37使用的是ADC1)

使用GPIO 、ADC、NVIC

步骤:

1.开启时钟(GPIOB、ADC1)
2.初始化GPIO结构体 PB0

(PA2模式:GPIO_Mode_AIN 模拟输入)

3.初始化NVIC结构体

即配置中断优先级

4.初始化ADC结构体
需要注意的有:
ADC_InitStruct.ADC_Mode=ADC_Mode_Independent; //独立ADC
ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//不使用外部触发
5.其他函数调用
RCC_ADCCLKConfig(RCC_PCLK2_Div8); //配置ADC时钟(只有这一个需要去"stm32f10x_rcc.h"里面找)ADC_Cmd(ADC1,ENABLE);//打开ADC
ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE); //中断配置ADC_ResetCalibration(ADC1);//校准ADC
ADC_StartCalibration(ADC1);//校准ADC
while(ADC_GetCalibrationStatus(ADC1));//等待ADC校准完毕ADC_SoftwareStartConvCmd(ADC1,ENABLE);//软件触发
ADC_RegularChannelConfig(ADC1,ADC_Channel_8,1,ADC_SampleTime_13Cycles5);//规则通道配置
6.写中断服务函数

同样的,首先判断标志位ADC_IT_EOC是否发生;如果是,那么调用固件库函数ADC_GetConversionValue(ADC_TypeDef* ADCx);
接受ADC的值,然后进行相应操作即可;最后清除标志位

6.使用PWM输出

(PWM输出是TIM的一种使用。STM32S103RBT6开发板只有TIM1/2/3/4。其中,TIM1是高级定时器,其他是通用定时器。通过查stm32f103rbt6.pdf手册,找出题目中对应GPIO引脚使用的是哪一个TIM
每一个TIM有4个通道,根据GPIO判断使用的是哪一个通道
如:PA4使用的是TIM3——CN1)

使用GPIO 、TIM

步骤:

1.开启时钟(GPIOA、AFIO、TIM1/2/3/4)
2.初始化GPIO结构体

(模式:GPIO_Mode_AF_PP 复用推挽输出)

3.初始化时基结构体(TIM_TimeBaseInitTypeDef)
TIM_TimeBaseInitStruct.TIM_Prescaler=71;//分频系数,使定时器频率为72/(71+1)=1MHz。
TIM_TimeBaseInitStruct.TIM_Period=999;//周期,即重装载值设置为1000,则可以定时1ms
4.初始化输出比较结构体(TIM_OCInitTypeDef)
特别的:
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;
5.其他的函数调用
TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//TIM预分频配置
TIM_Cmd(TIM3,ENABLE);  //打开相应的TIM

7.使用LCD

同IIC,直接使用比赛时提供的函数进行调用。

8.系统时钟Systick

调用函数SysTick_Config(SystemCoreClock/1000);配置系统时钟为1ms中断一次
然后写相应的延时函数即可

9.蜂鸣器

使用GPIO

步骤:

1.开启时钟(GPIOB、AFIO)
2.初始化GPIO结构体 PB4

(模式 :GPIO_Mode_Out_PP 推挽输出)

3.其他函数调用
GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);//配置引脚映射(禁止JTRST)

stm32编程初始化设备步骤相关推荐

  1. STM32配置组合设备(HID+CDC)

    STM32组合设备 STM32配置组合设备(HID+CDC) 1. CDC基础工程,HID基础工程生成 2.USB工程熟悉 2.1 USB初始化 2.2USB中断 2.3 相关结构体 2.3.1 ` ...

  2. 【嵌入式07】寄存器映射原理详解,GPIO端口的初始化设置步骤

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤. 一.STM32F103系列芯片的地址映射和寄存器映射原理 1.什么是寄存器? 2.地址映射和寄存器映射 ...

  3. 欧姆龙变频器MX2参数_第442期丨【源程序】基于三菱西门子欧姆龙松下PLC实现喷水池控制系统;欧姆龙PLC编程软件更新步骤...

    论坛周刊 1 Dec 2019 本期论坛周刊精彩内容: 1.[源程序]基于三菱\西门子\欧姆龙\松下PLC实现喷水池控制系统 2.欧姆龙PLC编程软件更新步骤 3.RSLinx Classic Ent ...

  4. 基于标准库函数与基于HAL库函数的stm32编程方式

    文章目录 基于标准库函数与基于HAL库函数的stm32编程方式 一.基于标准库 1. 介绍 2. 库函数的STM32串口程序编写 二.基于HAL库 1.介绍 2.HAL库STM32串口程序编写 三.差 ...

  5. 基于标准库函数与基于HAL库函数的stm32编程方式对比

    基于标准库函数与基于HAL库函数的stm32编程方式对比 一.标准库函数 二.HAL库函数 三.差异 四.stdunio IDE试玩 参考资料 一.标准库函数 1.标准库的解释 标准外设库(Stand ...

  6. USB学习笔记(5)STM32 USB库移植步骤

    USB学习笔记(5)STM32 USB库移植步骤 本文是将官网的USB驱动库文件移植到自己的工程里面,实现USB功能的具体移植步骤说明,实现Custom_HID功能. 1.先准备一个工程模板 获取工程 ...

  7. 零基础入门STM32编程(三)

    前情回顾 通过前面两篇文章的学习,我们已经对STM32有了一定的了解,知道了STM32单片机的基本分类和不同产品间的特点等知识,今天起围绕STM32F103xx继续深入浅出地学习单片机编程. 一.总线 ...

  8. 标准K-means算法的缺陷、K-mean++初始化算法、初始化算法步骤、Kmeans++算法实现

    标准K-means算法的缺陷.K-mean++初始化算法.初始化算法步骤.Kmeans++算法实现 目录 标准K-means算法的缺陷.K-mean&

  9. Python gui编程pyQt5安装步骤

    Python gui编程pyQt5安装步骤 =============================== -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWit ...

  10. Redis一个命令请求从发送到完成的步骤以及初始化服务器步骤

    一个命令请求从发送到完成的步骤 如下: 1.客户端将命令请求发送给服务器 当用户在客户端中键入一个命令请求时,客户端会将这个命令请求转换成协议格式,然后通过连接到服务器的套接字,将协议格式的命令请求发 ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组水平箱图(boxplot)实战
  2. php云人才系统调用,PHP云人才系统3.0正式发布
  3. mysql的编译_Mysql编译安装
  4. Spring Boot 微信点餐开源系统
  5. 1到100的素数(java)
  6. flink sql client读取hive时卡住
  7. Java中的Error和Exceptiond的异同点
  8. 十大经典排序算法1(Python版本)
  9. 第 180 章 IBM WebSphere
  10. 2021年最好用的5个股票API
  11. 实验一 SNMP网络管理架构的验证
  12. 数据库 求闭包、求候选码、范式转换、最小依赖集、无损分解及保持函数依赖
  13. python逐行读取xls文件
  14. Word编辑页码不从第一页开始
  15. 关于10进制转2进制的C语言代码
  16. 高级前端工程师和低级前端工程师的区别
  17. win系统C++的udp通信(接收并发送)详细教程、win下inet_pton和inet_ntop无法使用解决方法
  18. C51单片机与PCF8591模块的交互:C语言源码解析
  19. 自动化运维-Ansible(redhat 8)
  20. linux 关闭sendmail

热门文章

  1. java FTP获取文件夹中所有文件
  2. 博应用教你使用华为nova3添加桌面小工具
  3. 2021年全国水体分布(按省、市、县)矢量数据的制作与分享
  4. python 菜鸟联盟-菜鸟联盟python
  5. DNS与NS、NS记录
  6. java冒泡排序 代码简单明了
  7. 群晖系统如何布置php_群晖系统上如何切换PHP版本
  8. Gameplay - 多人游戏关卡设计
  9. 联想Yoga C930 NM-B741 EYG70 Ariel-SVT笔记本点位图TVW
  10. 使用Canvas合成多张图片和文字为一张图片