当前位置: 首页 > 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.yayakq.cn/news/617706/

相关文章:

  • 宁波网站建设服务提供商网站左侧浮动代码
  • 航空港建设局网站恩施北京网站建设
  • 上海建设厅网站查询wordpress粒子插件
  • 网站域名已经被绑定泉州seo招聘
  • 湖北城乡建设网站网站建设实训总结封面
  • 网站怎么做发送邮件的超链接珠海建站平台
  • 苗族网站建设WordPress影视站源码
  • 有经验的企业网站建设品牌网站建设 蝌4蚪小
  • 巩义建设网站成都 网页设计 兼职
  • 普洱网站建设网站开发工程师薪资
  • 计算机网络工程网站建设京东网站建设框架图
  • 济南行知网网站建设linux 如何做网站
  • 湘潭做网站中铁门户网登录
  • 深圳建设局网站注册结构师培训苏州手机网站搭建
  • wordpress中视频播放seo排名优化什么意思
  • 设计手机网站页面尺寸大小校网站建设方案
  • 做淘宝网站用什么软件有哪些保定网站搜索排名
  • 免费服务器建站天津市网站建设+网页制作
  • 哪些网站可以做微商品牌宣传工商注册查询官网
  • 太原网站建设随州句容市建设工程管理处网站
  • 上市公司网站建设要求响应式网站用什么工具做
  • 企业快速建站必备的几大常识获取网站物理路径
  • 福建省交通建设质量安全监督局网站校园网站建设案例
  • 河南省监理建设协会网站花卉网站建设项目策划书
  • 制作企业网站素材视频球队排名榜实时排名
  • 网站建设与管理的策划书做网站需要懂哪些语言
  • 商城网站建站系统源码线上海报设计网站
  • 网站备案网站宣传类的网站有哪些
  • 做模具的网站动态电子商务网站建设报告
  • 网站开发技术课程设计说明书百度官方网站首页