推荐阅读最新更新时间:2024-03-16 15:43
STM32F407串口的基本使用
串口 串口在嵌入式系统中是一个非常重要的外设,它通信方式简单在软件开发阶段常用作调试工具。本示例中我们只实现串口的输出功能,同时还 会实现一个具有printf功能输出接口。这样咱们以后的例程中就有了一个简单的调试工具。 1. STM32串口简介 STM32的串口功能非常丰富,它可以支持双全工异步通信、LIN、IrDA、智能卡协议、单线半双工通信、支持调制解调器操作。 接下来我们将对使用STM32的串口应该进行的哪些设置给予简单说明,并对需要设置的寄存器给予简单介绍。要使用串口除了应对串口的波特率等进行配置外还需要对串口用到I/O进行设置,下面将分步进行介绍: 1) 串口时钟使能 STM32可以对每个外设进行单独的时钟控制,因此配置
[单片机]
STM32笔记(二)(寄存器)——矩阵键盘
矩阵键盘是我第一个需要动手焊接东西的实验,是3*3的键盘,焊了一个下午。因为是第一次焊东西,有多处不足,但最后也勉强能用。键盘的电路是组长设计的,希望下一次我能自己独立设计电路。 键盘外观 正面 背面 外观略显粗糙。。。。 主要代码 矩阵键盘最主要的一部分代码就是按键扫描部分,通过一个扫描函数对高低电平进行判断,从而确定按键的位置。用过串口输出案件编号1~9。 key.c代码 void KEY_Init1(void) { RCC- APB2ENR|=1 3; JTAG_Set(SWD_ENABLE); GPIOB- CRL&=0X000FFFFF; //PB5,6,
[单片机]
PIC16F690 串口程序
最近又用到PIC16F690这款芯片做项目了,产品调试没界面,所以用串口查看下数据,使用了下异步通信下的串口功能,程序比较简单,记录下,以作参考。 配置部分程序: TRISB = 0B01100000; //设置PB7输出,做TX用;RB5输入RX用 OSCCON=0B01100001; //内部4M晶振 SPBRG=0X19; //设置波特率为9600BPS 参考手册165页 TXSTA=0X24; //使能串口发送,选择异步模式,选择高速波特率 RCSTA=0X90; //使能串口工作,连续接收 RCIE=0X1; //使
[单片机]
【STM32】 定时器---正交解码编码器模式详解
增量式编码器 增量式编码器也成为正交编码器,是通过两个信号线的脉冲输出来进行数据处理,一个输出脉冲信号就对应于一个增量位移,编码器每转动固定的位移,就会产生一个脉冲信号 通过读取单位时间脉冲信号的数量,便可以达到测速的效果(v=s/t),通过对脉冲信号的累加,和编码器的码盘的周长(转一圈对应距离) 便可以达到计算行走距离的效果(s=n*d) 编码器信号: A 脉冲输出 B 脉冲输出 Z 零点信号 当编码器旋转到零点时,Z信号会发出一个脉冲表示现在是零位置 表示编码器转了1圈,可用来记录编码器转了多少圈,从而知道运行距离 VCC 电源线 GND 地线 编码器线数: 编码器的线数 ,是说编码器转一圈输出多少个脉冲,,,如
[单片机]
原子的串口ISP一键下载研究
把我弄晕了,CH340的DTR和RTS。。。 原子的原ISP一键下载图: 《STM32F1开发指南-库函数版本_V3.1 》中对下载电路的解释: 更直观的解释应该上张图: 总而言之,就是对BOOT0和BOOT1的赋值,为了简化电路,把BOOT1下拉到地,只需要控制BOOT0即可。 有个问题,不容忽视,复位完之后,进入ISP下载程序,下载完之后,并没有再用上位机控制BOOT0,反而也可以直接执行程序。 网上有人这样解释, 说实话不太能懂。 下载完之后,两个三极管断开,BOOT0,BOOT1全部被硬件上的电阻拉低,然后自动进入了运行模式?!~ 附一张今天刚列的直观理解图,注意了,刚看的时候,一直有
[单片机]
彻底解决stm32F042串口下载配置flymcu
本文的初衷是解决一个问题,描述如下: 1.实验芯片:stm32f042f4p6 2.封装:TSSOP20 3. 实验目的:使用PA0--PA6(接段位); PA7 PA13,P14(接共阳极),点亮3位7段数码管,并显示数字 4.实验步骤 : ·1 编写代码点亮PA4 的led 灯,点灯测试cpu。用 jtag9 配置 SW模式 100k 下载,一切正常,测试成功 ·2 编写代码使用PA14,PA13 引脚。。。。。等引脚链接数码管,下载成功,运行有问题,修改代码,想重新下载,完蛋了!!!就是下载不进去 报 No Cortex-M SW Device Found ?????? 这是咋么回事呢?
[单片机]
STM32使用printf丢失第一个字母的问
STM32使用printf函数给串口打印信息的执行步骤为: 1.重定向printf函数 给uart.c文件中增加如下函数: //重定向c库函数printf到USART1 int fputc(int ch, FILE *f) { /* 清SR寄存器中的TC标志 */ USART_ClearFlag(USART1,USART_FLAG_TC); /* 发送一个字节数据到USART1 */ USART_SendData(USART1, (uint8_t) ch); /* 等待发送完毕 */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return (ch
[单片机]