• stm32实战


     

    1. HAL_StatusTypeDef HAL_Receive_IT(UART_HandleTypeDef *huart, uint8_ *pData, uint16_t size)
    2. {
    3. if (huart->RxState == HAL_UART_STATE_REDAY)
    4. {
    5. if ((pData == Null)) || (size == 0U)
    6. {
    7. return HAL_ERROR;
    8. }
    9. __HAL_LOCK(huart);
    10. huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
    11. return (UART_Start_Receive_IT(huart, pData, Size));
    12. }
    13. else
    14. {
    15. return HAL_BUSY;
    16. }
    17. }

    这个代码名称为HAL_Receive_IT,中断接收函数,这个函数用来表示操作的状态(名称为HAL_StatusTypeDef状态类型)

    接收三个参数,分别为:

    ·huart:用来指向uart句柄的指针,该句柄配置了uart模块配置信息

    ·pData:指向数据缓冲区的指针,用来存储接受的数据

    ·size:接受数据的大小,以字节为单位。

    1.蓝牙控制led灯显示

    通过cubemx初始化接口,这里采用c11作为输出引脚,pb10,pb11也就是uart3作为串口进行发送接收数据,代码如下:

    1. uint_8 Byte;
    2. while(1)
    3. {
    4. HAL_StatusTypedef status=HAL_UART_Receive(&huart, &Byte, 1, 1000)
    5. if(status==HAL_OK){
    6. if(Byte==0x41)
    7. {
    8. HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,GPIO_PIN_RESET)
    9. }
    10. else
    11. {
    12. HAL_GPIO_WritePin(GPIOC,GPIO_PIN11,GPIO_PIN_RESET)}
    13. }}
    uint8_t Byte;

    这个代码有问题,目前是传输的问题,能传但是传的数据是什么形式暂时还不太清楚。

    下午又整了一下,发现还是传不过来,准备用中断来进行传输了,这里要注意Byte里面存的是数据,而&Byte代表的是地址,而不是数据,它是一个指针,接收的是内容,下面的if语句是判断数据是否为0x41这是一个无符号8位整数,41对应的就是0100 0001,8位。取值范围为0-255,一个字节有8位。

    1.输出pwm波对舵机进行驱动

    (1)外设时钟使能寄存器是什么

    用来控制片上各种时钟工作状态的寄存器,控制定时器(TIM),看门狗(WWDG),串行外设接口(SPI),同步异步收发器(USART),I2C(总线串行接口),usb(通用串行总线),CAN(控制域局域网),RCC_APB1是外设时钟使能寄存器,他是8位的,通过设定指定的位,可以控制相应的外设开启或者关闭时钟,

    他竟然有32位,我的天哪,这是想控制多少东西呀。

    这里使用固件库吧,从底层开始做比较有意思,固件库资料里面是定义的函数,用户手册则是使用的一些地址,这两个是一样的,只不过固件库是对用户手册中的一些地址封装成了固定的函数,使用的时候直接调用即可,数据手册则是查看引脚的服用接口,以及做什么用的。

    波特率是用来传输速度控制的,也就是时钟,时钟方波,一个周期传输一位数bite。

    12.立创·开发板GD32教程:串口通信原理介绍_哔哩哔哩_bilibili

    串口控制灯,首先串口配置。调用.h文件需要配置,加到这里.h的上一级文件。

    新建usart文件,之后

    新建两个文件

    添加

  • 相关阅读:
    链表算法题
    数据挖掘技术-绘制折线图
    10.Redis系列之数据类型GeoSpatial
    Go语言各种扩容机制(防止混淆)
    TCP协议详解
    Appium —— 初识移动APP自动化测试框架Appium
    测试工作十年,想对还在迷茫的朋友说:一点要做好个人规划...
    [MQ] MQ的应用场景及Docker安装RabbitMQ
    从入门开始手把手搭建千万级Java算法测试-斐波那契额数列的三种实现方法比较
    springboot缓存篇之mybatis一级缓存和二级缓存
  • 原文地址:https://blog.csdn.net/weixin_48433993/article/details/139629341