当前位置: 首页 > news >正文

网站维护的要求深圳优秀小程序开发公司

网站维护的要求,深圳优秀小程序开发公司,济南建网站,网站权重如何合理分配首先我们先看STM32F103C8T6的电路图 由图可知,其PA9和PA10引脚分别为UART的TX和RX(注意:这个电路图是错误的,应该是PA9是X而PA9是RX,我们看下图的官方文件可以看出),那么接下来我们应该找到该引脚的定义是什么&#xf…

        首先我们先看STM32F103C8T6的电路图

由图可知,其PA9和PA10引脚分别为UART的TX和RX(注意:这个电路图是错误的,应该是PA9是X而PA9是RX,我们看下图的官方文件可以看出),那么接下来我们应该找到该引脚的定义是什么,请参考STM32F103Cx手册,找到pin definitions。

        STM32系列集成了很多个UART接口,如UART1、UART2等,每个都可以独立配置和使用来与其他设备进行通信。UART1只是这些可用UART接口中的一个实例。

可以看到PA9和PA10使用的是UART1,配置外设第一件事情就是找所对应的时钟,因此接下来是根据接口来找对应的时钟。还是在手册中,查找"performance line block diagram",如下图:

        由图可知,USART1挂载在APB2总线上,因此如果我们需要该接口,则需要使能该时钟。根据STM32标准库手册,找到使能时钟所需的函数。

代码如下:

void Uart1_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);// 配置PA9,作为TX,使用的是复用推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);// 配置PA10,作为RX,使用的是浮空输入,因为可能输入高电平也可能输入低电平GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);// 配置UARTUSART_InitStructure.USART_BaudRate = 115200;USART_InitStructure.USART_WordLength = USART_WordLength_8b;  // 数据位长度USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;USART_Init(USART1, &USART_InitStructure);USART_Cmd(USART1, ENABLE);
}

配置好端口后,那么就应该发送数据了,同样的发送数据也应该去标准库函数中找相应的函数。需要提醒的,我们主要是使用printf函数来测试uart接口的功能,, 而printf函数的标准输出设备是显示屏,因此需要将输出重定向到uart口上而不是显示屏上,就需要重写printf,但是,prinft只是一个函数宏,实际靠的还是fputc,所以总的来说还是要重写fputc。

代码如下:

// 输出从标准输出设备重定向到UART, 函数原型是int fputc (int c, FILE *fp)而不是int fputc (char c, File *fp)
// printf函数的一个个字符输出到UART
int fputc (int c, FILE *fp)
{while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) != SET); // TXE = Transmit Data Register EmptyUSART_SendData(USART1, c);while(USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET); // TC = Transmission Completereturn 0;
}

配置好uart口以及进行输出重定向后,只要调用就可以实现printf输出到uart口了。

#include "bsp_SysTick.h"
#include "bsp_uart.h"int main(void)
{int i = 0;SysTick_Configuration();Uart1_Configuration();while(1){printf("Hello world\n");printf("i = %d\n", i++);Delay_us(1000000); // 等待1秒,该函数是通过cortex的SysTick来编写的,这里的主要作用就只是延迟而已}
}

需要特别注意的是,如果你使用调试器进行Download,也就是下图这个东西,那么使用的将是半主机模式。

下面简单介绍什么是半主机模式:

启用半主机模式:

        单片机上的程序遇到I/O调用时(比如printf),会通过调试接口将这些请求转发给宿主机上的调试器处理。


关闭半主机模式:

        单片机上的程序必须自己处理所有的I/O操作,或者通过预定义的硬件接口与其他设备通信。

因此,我们如果使用调试器(或者叫做仿真器)进行测试调试代码的话,想要有数据从单片机的uart口输出,那么我们应该关闭半主机模式。

如何关闭:

这样应该就可以解决串口助手看不到数据的问题了。

http://www.sczhlp.com/news/106857/

相关文章:

  • 手机网站cms有哪些网站时间显示
  • 天津市网站制作 公司服装设计软件app下载
  • 使用Apache做web服务器时无法断点续传的怎么办?
  • Rust使用rbatis
  • 2025ICPC网络赛第一场(A,B,C,D,G,I,M)
  • 网站和app的开发成本软件开发模型的种类
  • 网站怎么做前台跟后台的接口网站的百度百科怎么做
  • 杭州酒店网站设计公司推荐小程序登录页面
  • 计划书网站推广的目录怎么做asp 做网站的缺点
  • 唐山网站建设选汉狮美工在网站建设中的作用
  • 凡客网上做的网站能否更改域名新云网站模板
  • 智能建站服务平台xml网站地图每天更新
  • 网站推广的主要方法有哪些?专业培训seo的机构
  • 手机cms建站系统开发app需要的技术
  • Google Maps
  • 【TES600G】基于JFM7K325T FPGA+FT-M6678 DSP的全国产化信号处理平台
  • KMS激活Windows系统(win10)
  • 建立网站还是建设网站信丰县建设局网站
  • 网站统计数据怎么做c成apa格式盘锦做网站企业
  • 成都响应网站建设网页传奇游戏排行榜比亚迪
  • 比价网站源码整站程序蘑菇街的网站建设
  • 佛山专业的网站建设公司自己电脑做网站服务器
  • 基于python3的http文件服务器
  • 大阪府
  • 网站做的app有哪些企业公司如何做网站
  • php 做网站网站建设平台招商
  • 如何为网站做推广wordpress是不是cms
  • 网站以个人名义备案淄博网站制作企业营销
  • 杭州企业求网站建设广告设计公司logo
  • wifi管理网站大连网站推广招聘