STM32各模块模式功能CubeMX配置

1.GPIO输出配置

  • 双击选择对应的IO扣,选择为输出模式
    在这里插入图片描述
    在这里插入图片描述

2.按键/中断配置

选择IO口,选择中断模式

在这里插入图片描述

模式选择
External interrupt Mode with Falling edge trigger detection (下降沿触发) 需上拉输入
External interrupt Mode with Rising edge trigger detection (上升沿触发) 需下拉输入

NVIC中断打开

在这里插入图片描述

3.SCL和SDA的配置

点击GPIO口,选择输出模式
GPIO mode: Output Push Pull (选择输出)
电阻均上拉
输出速率默认
GPIO output level :选择High (初始输出为高)

4.串口配置

初始化串口

在这里插入图片描述

打开串口中断(全局)

在这里插入图片描述

5.PWM的配置

1.选择要输出的PWM的IO口
在这里插入图片描述

2.开启对应的PWM通道(以下为开启PWM模式1,向上计数,低于ARR为高电平)

在这里插入图片描述

3.设置预分频系数与自动重装载值
PWM频率 = 系统频率(72M)/ psc / arr
PWM分母为ARR

在这里插入图片描述

4.设置初始输出占空比

在这里插入图片描述

6.编码器的配置

1.设置编码器模式(选择4倍频)

在这里插入图片描述

2.设置滤波器,必须大于5

在这里插入图片描述

3.开启全局中断

在这里插入图片描述

4.编码器的所有引脚都需要上拉,其他默认
在这里插入图片描述

7.普通定时器计时配置

1.选择TIM,设置内部时钟源,并打开自动重装载

在这里插入图片描述

2.打开更新中断与全局中断(globe)

在这里插入图片描述

8.使用CJSON需要将堆栈调大

不调大可能会造成CJSON程序运行时卡死的情况
在这里插入图片描述

9.STM32f103定时器的分类

基本定时器:TIM6 TIM7 只能定时
通用定时器:TIM2 TIM3 TIM4 TIM5
高级定时器:TIM1 TIM8
stm32f407对于f103只增加了通用定时器

10.OLED的配置

四寸OLED只需要SDA和SCL
将SDA和SCL口设置为GPIO输出模式且上拉即可

11.蓝牙的配置

与串口的配置相同

在这里插入图片描述
在这里插入图片描述

12.超声波的配置

超声波供电最好5V

  • 原理:给Trig一个大于10us的高电平脉冲,然后读取echo脚的高电平信号时间,通过公式:距离 =
    T * 声速/计算距离
  • Trig脚配置为GPIO输出
  • echo配置为GPIO输入
    以上只修改标签,其他默认即可

13.舵机(MG995)配置

该舵机需要20ms的启动时间,必须配置50Hz
接线说明:红色VCC,棕色GND,橙色信号线
原理:使用PWM进行驱动,设置合适的分频系数PSC,自动重装载值ARR以及占空比CCR

1.定时器选择

在这里插入图片描述

2.分频系数与重装载值设置

在这里插入图片描述

舵机的脉冲控制表格

在这里插入图片描述

  • 0.5ms~2.5ms对应500 ~2500的占空比(400就能开始启动)
  • 从500开始,顺时针转动 但是会逐渐减速。增加至1500左右就会停止
  • 从1500到2500为逆时针转,逐渐加速,2500为最大速度。
    t = 0.5ms——————-舵机会转动 0 °
    t = 1.0ms——————-舵机会转动 45°
    t = 1.5ms——————-舵机会转动 90°
    t = 2.0ms——————-舵机会转动 135°
    t = 2.5ms——————-舵机会转动180

14.F103中断优先级说明

在这里插入图片描述

  • 高优先级的抢占优先级可以打断低抢占优先级的中断。
  • 抢占优先级相同的中断,高响应优先级不能打断低响应优先级
  • 抢占优先级相同的中断,当中断同时发生时,响应级高的先执行
  • 抢占和响应优先级都一样则哪个中断先发生,则执行哪个
    数字越小代表优先级越高
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要驱动dx-bt20蓝牙模块,需要使用STM32F103C8T6的串口通信功能,以下是一个简单的步骤: 1. 连接dx-bt20蓝牙模块STM32F103C8T6的串口引脚。dx-bt20蓝牙模块的TX引脚连接到STM32F103C8T6的RX引脚,dx-bt20蓝牙模块的RX引脚连接到STM32F103C8T6的TX引脚。此外,还需要连接dx-bt20蓝牙模块的VCC引脚和GND引脚到STM32F103C8T6的电源引脚。 2. 在STM32F103C8T6的代码中初始化串口功能。使用STM32的HAL库可以方便地实现串口的初始化,例如以下代码: ```c UART_HandleTypeDef huart1; void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 9600; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } } ``` 3. 在STM32F103C8T6的代码中实现与dx-bt20蓝牙模块的通信。可以使用HAL库中的UART发送和接收函数实现通信,例如以下代码: ```c uint8_t rx_data[1]; uint8_t tx_data[] = "Hello World!"; void send_uart_data(uint8_t *data, uint16_t len) { HAL_UART_Transmit(&huart1, data, len, HAL_MAX_DELAY); } void receive_uart_data(uint8_t *data, uint16_t len) { HAL_UART_Receive(&huart1, data, len, HAL_MAX_DELAY); } void send_hello_world() { send_uart_data(tx_data, sizeof(tx_data)); } void receive_data() { receive_uart_data(rx_data, sizeof(rx_data)); } ``` 4. 在STM32F103C8T6的代码中实现dx-bt20蓝牙模块的控制。可以使用UART发送AT指令给dx-bt20蓝牙模块,例如以下代码: ```c void reset_bt_module() { uint8_t reset_command[] = "AT+RESET\r\n"; send_uart_data(reset_command, sizeof(reset_command)); } ``` 以上是一个简单的示例,具体实现方式可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

silly_foxWY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值