CH32V307环境参数在线监测系统(一)

这篇具有很好参考价值的文章主要介绍了CH32V307环境参数在线监测系统(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CH32V307环境参数在线监测系统是以CH32V307VCT6为核心,由ESP8266模块、DHT11温湿度传感器模块、TFT LCD显示屏组成。系统实物图如下所示:

ch32v307,笔记,单片机,stm32,物联网

     系统功能主要有RTC实时时钟、WIFI网络授时、DHT11温度测量、温湿度数据实时上传到onenet平台、屏幕定时刷新等功能。本例程主要用到CH32V307的GPIO、串口、AD转换、定时器、RTC功能。今天先来看一下GPIO端口操作。 

CH32V307官方例程提供了GPIO应用的基本案例。官方案例代码主函数如下:

     主程序首先是通过NVIC_PriorityGroupConfig配置优先级分组-抢占优先级和次优先级,然后根据时钟寄存器值更新系统核心时钟变量,官方例程默认采用外部高速时钟作为时钟源,倍频至96MHZ。Delay_Init为ms级延时函数。初始化串口,用于输出调试信息。然后就是通过初始化函数初始PD0。在while循环中,通过GPIO_WriteBit函数对PD0进行写操作。        一般而言,嵌入式系统在正式工作前,都要进行一些初始化工作,比如GPIO使用前,先进行GPIO的初始化,如官方例程GPIO_Toggle_INIT函数,一般我们写成一个函数的形式。GPIO初始化函数如下图所示,

      这里GPIO初始化函数首先定义了一个GPIO_InitTypeDef类型的结构体变量。右键打开其声明可以看到这个结构变量的成员如下:有GPIO_Pin、GPIO_Speed和GPIO_Mode三个成员变量。

      这里GPIO_Pin就是需要配置的引脚。在ch32v30x_gpio.h的头文件中可以看到其预定义,如下图所示

ch32v307,笔记,单片机,stm32,物联网

GPIO_Speed为所选择的初始化引脚的输出响应速度这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关),芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,可以根据需要选择合适的驱动电路。在输出模式时可选速度如下:10MHz、2MHz、50MHz

ch32v307,笔记,单片机,stm32,物联网

      这里需要注意:高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这个非常有利于提高系统的电磁干扰(EMI)性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配,推荐10倍以上。对于串口,假如最大波特率只需要115.2K,那么用2M的GPIO的引脚速度就够了,既省电也噪声小;对于IIC接口,假如用400K的传输速率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够。这时可以选择10M的GPIO引脚速度;对于SPI通信,假如使用18M或9M的传输速率,用10M的GPIO的引脚速度显然不够,需要选用50M的GPIO的引脚速度。

   GPIO_Mode所选择引脚的操作模式,CH32V307系列的MCU的输入/输出引脚可配置为一下8种模式(4种输入模式+2种输出模式+2种复用输出模式)。

ch32v307,笔记,单片机,stm32,物联网

GPIO_Mode_AIN为模拟输入,ADC对应的引脚配置引脚为模拟输入

GPIO_Mode_IN_FLOATING为浮空输入

GPIO_Mode_IPD带下拉输入

GPIO_Mode_IPU带上拉输入

GPIO_Mode_Out_OD开漏输出,要得到高电平状态需要上拉电阻才行如果引脚不连接外部的上拉电阻,则只能输出低电平。

1.开漏输出的这一特性一个明显的优势就是可以很方便的调节输出的电平,因为输出电平完全由上拉电阻连接的电源电平决定。所以在需要进行电平转换的地方,非常适合使用开漏输出。

2.开漏输出的这一特性另一个好处在于可以实现"线与"功能,所谓的"线与"指的是多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。而推挽输出就不行,如果高电平和低电平连在一起,会出现电流倒灌,损坏器件。

    GPIO_Mode_Out_PP推免输出,推挽输出结构是由两个MOS或者三极管收到互补控制的信号控制,两个管子始终一个在导通,一个在截止,如下图所示:

ch32v307,笔记,单片机,stm32,物联网

      推挽输出的最大特点是可以真正能真正的输出高电平和低电平,在两种电平下都具有驱动能力。所谓的驱动能力,就是指输出电流的能力。推免式输出既可以提高电路的负载能力,又能提高开关速度,且导通损耗小效率高。输出既可以向负载灌电流(作为输出),也可以从负载抽取电流(作为输入)。

GPIO_Mode_AF_OD复用功能的推免输出

GPIO_Mode_AF_PP复用功能的开漏输出

GPIO_Toggle_INIT初始化代码功能就是初始化PD0为普通推免输出模式,通过PD0控制LED灯闪烁。其中GPIO_Init(GPIOA, &GPIO_InitStructure);这个函数的第一个参数GPIOD为宏定义,其相关的宏定义如下:((GPIO_TypeDef *) GPIOD_BASE)

GPIOD_BASE            (APB2PERIPH_BASE + 0x1400)

ch32v307,笔记,单片机,stm32,物联网

      对照官方手册寄存器映射表如下图所示,可以看到这里宏定义其实为GPIOD寄存器组的首地址。而第二个参数就是定义的结构变量是用户对GPIOD端口的参数设置的首地址,就是上面我们介绍的端口号、模式和速度。CH32单片机使用固件库函数完成对外设初始化都是采用这种规范。

ch32v307,笔记,单片机,stm32,物联网

ch32v307,笔记,单片机,stm32,物联网

另外在初始化代码中还有一句语句是RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);

      这句代码是开启GPIOD的时钟输出功能CH32系列单片机和STM32系列单片机一样外设带有时钟输出使能控制,如AHB总线时钟、内核时钟、各种外设APB1APB2外设、ADC时钟等。因此要使用GPIOD模块时,必须先使能对应的时钟。这里GPIOGPIOAGPIOBGPIOCGPIOD)连接外设总线上APB2上,如下图所示。因此通过以下代码使能其时钟。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);

ch32v307,笔记,单片机,stm32,物联网

在while循环中,通过GPIO_WriteBit函数对PD0进行写操作。

ch32v307,笔记,单片机,stm32,物联网

       ch32v30x_gpio.c文件中我们看到GPIO_WriteBit的源代码,看芯片手册,可知这里BSHRBCR分别为端口置位/复位寄存器。注意这两个寄存器写0没有影响,写1则会置为或者复位。

ch32v307,笔记,单片机,stm32,物联网

ch32v307,笔记,单片机,stm32,物联网

ch32v307,笔记,单片机,stm32,物联网

      对于上面的代码,我们也可以直接对寄存器访问来编写程序,寄存器直接操作如下:

ch32v307,笔记,单片机,stm32,物联网

本编文章对GPIO操作代码分析就到这里。本项目用到IO口配置如下:

1.串口通信引脚配置

ch32v307,笔记,单片机,stm32,物联网

      这里串口通信引脚使用的是PA2作为发送,PA3作为接收。所以PA2这个引脚配置为功能复用推免输出。PA3作为接收引脚属于输入,这里配置为浮空输入模式。

2.LED指示灯引脚配置

ch32v307,笔记,单片机,stm32,物联网

3.LCD显示屏接口引脚

ch32v307,笔记,单片机,stm32,物联网

ch32v307,笔记,单片机,stm32,物联网

4.DHT11相关引脚初始化

ch32v307,笔记,单片机,stm32,物联网文章来源地址https://www.toymoban.com/news/detail-570373.html

到了这里,关于CH32V307环境参数在线监测系统(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CH32V307VCT6单片机程序写入教程

    之前在沁恒微电子官网上申请了块互连型的单片机,芯片的型号是 CH32V307 ,之前在论坛上看到他们说这一块单片机和 stm32 系列的单片机差不多,正好今天板子到了我试了一下,发现真的和 stm32 差不多。 很多没有接触过stm32单片机但是白嫖到板子的朋友可能不会用这块板子,

    2024年02月01日
    浏览(40)
  • 沁恒CH32V307使用记录:使用TIM输出PWM信号

    使用TIM输出PWM信号是单片机中比较常用的一个功能。这篇文章将对CH32V307中相关内容进行说明。 本文使用沁恒官方的开发板 (CH32V307-EVT-R1沁恒RISC-V模块MCU赤兔评估板) 进行演示。 CH32V307拥有多个定时器,只有通用定时器和高级定时器支持PWM输出功能,需要注意的是不同的定

    2024年02月17日
    浏览(79)
  • 沁恒CH32V307单片机入门(01):基础说明与流程体验

    工作这几年单片机主要就接触过 Atmel、Renesas、Microchip、ST 这些厂家的,最近几年因为内部外部的各种因素单片机的价格和供应都挺不稳定的,将来会发生什么也不好说。另外这些年国内的单片机发展也挺快的。所以准备试试国产的单片机。 这里准备使用南京沁恒的CH32V307为基

    2024年01月25日
    浏览(54)
  • 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 CH32V208WBU6 评估板

    2024年02月02日
    浏览(51)
  • 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 CH32V208系列是沁恒

    2024年02月02日
    浏览(36)
  • 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 CH32V208WBU6 评估板

    2024年02月04日
    浏览(59)
  • 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 在介绍下面的内容

    2024年02月02日
    浏览(40)
  • CH32V203 单片机串口使用

    以串口2为例,初始化代码如下: 发送数据代码如下: USART_SendData(USART2, 0x55);  以上代码使用 MounRiver Studio 开发,单片机型号 :CH32V203C8T6

    2024年02月12日
    浏览(47)
  • 沁恒ch32V208处理器开发(四)串口通信

    资源配置 CH32V208 系列,是基于 RISC-V 指令架构设计的 32 位 RISC 内核 MCU,根据封装的不同,可用的USART串口资源如下表所示: 且USART具有如下主要特征: (1)全双工或半双工的同步或异步通信 (2) 支持分数波特率发生器,最高 9Mbps (3)可编程数据长度、停止位长度 (4)支

    2024年02月13日
    浏览(43)
  • 沁恒ch32V208处理器开发(三)GPIO控制

    GPIO功能概述 CH32V2x 微控制器的GPIO 口可以配置成多种输入或输出模式,内置可关闭的上拉或下拉电阻,可以配置成推挽或开漏功能。GPIO 口还可以复用成其他功能。端口的每个引脚都可以配置成以下的多种模式之一: 内部结构图如下: 可以看出,IO 口内部可分为输入驱动模块

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包