推荐阅读最新更新时间:2024-03-16 14:35
AVR单片机串口红外线传输试验程序
为了验证串口红外传输速度,我搭建了这个小系统。 问题从红外线接收头开始,我使用现成的红外遥控接收头,这就省去了搭建放大整形等等麻烦,但限制也就此产生,后述。红外头内部有40KHZ的选通,所以数字信号必须搭载在40KHZ上。 用74LS00作40KHZ方波发生器,使用如图阻容,产生的方波大致在需求范围。 先想用40KHZ晶振,拆了两个遥控器,445KHZ,不能用,所以还是阻容法,这个50000P是我反复调整的结果。 选用74LS00主要看上它有与门,我们用10脚、9脚入,8脚出这个与非门,把数字信号和载波信号“与”在一起。 遥控接收的要求是,无信号就无载波,串口输出等待状态为高电平,所以用与非门反向一下,13、12脚入,11脚出即是
[单片机]
STM32-(10):Printf
学C语言的时候我们经常将printf作为打印输出,可以加格式转换符,比如十进制,十六进制,浮点输出,功能十分强大。在硬件进行调试的时候,也希望能输出这样一个结果,能够看到内部的ARM工作在什么状态,或者运行的结果,一般会用到数码管、液晶屏,但是控制起来麻烦,如果也能用到printf,那肯定很方便! 此时我们只需将printf重定向,原来是输出到屏幕,我们只需要重定向输出到串口。 串口只需要一个串口助手就能看到打印。 printf 是 标准的输入输出库 stdio.lib 内实现的, 这个 lib 库赖以支持的基础是一个文件流 FILE,文件流内有很多的底层函数,比如:_sys_exit _sys_open ,其中有一个底层函数
[单片机]
STM32中ADC的使用/printf函数重定向串口显示内部温度传感器测量值
STM32F334C8T6这款MCU中有两个12位ADC(模数转换器),ADC1的通道16连接到内置的一个温度传感器,本文使用该温度传感器测量MCU和周围的环境温度,并且通过串口发送到PC的串口助手进行显示。 1. ADC的使用 1. select the ADC clock using the function RCC_ADCCLKConfig() 2. Enable the ADC interface clock using RCC_AHBPeriphClockCmd(); 3. ADC pins configuration Enable the clock for the ADC GPIOs using the fo
[单片机]
单片机修改底层函数putchar()实现printf()在LCD上输出
单片机源程序如下: #include reg51.h #include intrins.h #include stdio.h #include LCD.h /*********************** 主函数函数 *************************/ void main(void){ LcdInitiate(); WriteAddress(0x00); printf( Hello Everybodyn ); printf( Pai= %.4f ,3.1415); while(1); } /*********************** 修改底层输出函数 *
[单片机]
printf不定向直接使用问题以及软件更新后的代码补全
我们很多时候可能直接调用printf,然后系统会出现各种各样的问题。 那么究竟是为什么呢? 因为我们需要将这个东西实现在,我们必须定义printf输出的端口 int fputc(int ch, FILE *f) { while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET)) { USART_SendData(USART1, (u8) ch); } return ch; } 这才是c里面的标准输出函数。 当然,我一直都在为keil没有代码补全而烦恼,然后经过同事的指点,我发现是有这个功能的。 configuration里面
[单片机]
STM32中printf与scanf的重定向问题
关于STM32中 printf 与 scanf 的重定向问题在此我仅对不使用 USE MircoLIB 的情况做整理(针对Keil RVMDK开发环境)。 ① :首先需要在 usart.h 中包含 “stdio.h” 头文件 ② :在 usart.c 中,加入如下代码块,以此避免使用半主机模式,并重定向 printf 和scanf 函数; #if 1 #pragma import (__use_no_semihosting_swi) /*标准库需要的支持函数,use_no_semihosting_swi以避免使用半主机模式*/ struct __FILE { int handle; };
[单片机]
STM32多串口printf函数
1.配置usart2的串口配置,gpio,rcc enable,跟上面类似 2.勾选usb micro lib,跟上面类似 3.添加头文件#include stdarg.h ,编写USART2的printf函数 (1)hal库 /* USART1专用的printf函数 在usart.c中添加下列函数,还要添加申明头文件#include stdarg.h , #include stdio.h //支持printf函数 USART1_printf(“abcd”)用USART2发送字符abcd */ //hal库自定义串口printf函数 void printf2(char * fmt,…) { char buffer ; uint
[单片机]
STM32CubeMX之串口重定向(printf 的使用)
一. 改写函数 新建一个头文件 debug_com.h #ifndef __DEBUG_COM_H #define __DEBUG_COM_H #ifdef __cplusplus extern C { #endif #include stdio.h #include usart.h #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ PUTCHAR_PROTOTYP
[单片机]