推荐阅读最新更新时间:2024-03-16 15:14
STM32程序添加printf函数后无法运行的解决方法(串口实验)
标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(
[单片机]
Keil MDK STM32系列(八) STM32F4基于HAL的PWM和定时器输出音频
方式1: 通过PWM和TIM输出音频 机制 音频使用一个预生成的的8bit无符号数组, 采样率为8KHz 输出包含两部分, 一部分是TIM2产生连续的PWM, PWM分辨率设置为256, 正好对应8bit PCM采样 输出的第二部分是TIM3产生的定时中断, 中断的频率正好是8KHz, 每次中断都修改一次PWM的占空比 通过调节PWM频率可以调节输出音质, PWM频率越高音质越好(谐振频率越远离音频) 通过调节PWM分辨率可以调节音量, PWM分辨率越高, 音量越低 配置STM32CubeMX 选择芯片STM32F401CCU6, 创建新项目 系统时钟 System Core - SYS- Debug: Serial Wi
[单片机]
STM32 Flash
1:Flash简介 FLASH存储器是闪速存储器,它的主要特点是在不加电的情况下能长期保持存储的信息。就其本质而言,Flash Memory属于EEPROM(电擦除可编程只读存储器)类型。它既有ROM的特点,又有很高的存取速度,而且易于擦除和重写, 功耗很小。 2:嵌入式Flash特性 对于 STM32F40x 和 STM32F41x,容量高达 1 MB;对于 STM32F42x 和 STM32F43x,容量高达 2 MB 128 位宽数据读取 字节、半字、字和双字数据写入 扇区擦除与全部擦除 低功耗模式 STM32F40x和STM32F41x Flash 模块构成 可以看到 主存储器 该部分用来存放代码和数据常数(如
[单片机]
windows下用J-link J-Flash下载STM32程序
打开“Option”—》“Project settings…”,进行烧写前的必要设置,如下图: 在“General”页,选择“USB”,如下图: 在“Target Interface”页,选择“JTAG”,JTAG速度设置为“Auto selection”,如下图 在“CPU”页,选择 开发板 的CPU型号:ST STM32F103VB,如下图: “FLASH”页不用设置,默认设置就可以了。 在“Production”页,我们把“Start application”选上,则在下载成功之后,程序会自动运行。 在设置完成后,我们点击“应用”和“确定”退出。在JLINK软件界面左边,将显示烧写
[单片机]
stm32功能严重异常的几个常见原因
我们在从事MCU应用开发过程中,难免会碰到MCU芯片异常的问题。比如异常复位,表现为复位脚有电平跳变或者干脆处于复位电平;在做代码调试跟踪时,发现代码往往进不到用户main()程序;或者时不时感觉芯片死掉了,功能完全不可控等。 针对类似严重异常情况的原因我在这里大致总结下,与大家分享。 1、时钟问题。一般表现在时钟配置异常,比方配置超出芯片主频工作范围。【对于STM32系列MCU,如果使用STM32CUBEMX图形化工具做配置,基本可以回避这个问题】 2、电源问题。比方电源质量差,纹波过大,尤其开关电源供电时;或者供电芯片质量差,输出不稳定;或者系统供电能力不足而引起电源波动等。 3、BOOT脚配置问题。对于ARM
[单片机]
STM32的中断优先级详解
中断优先级设置步骤: 系统运行后先设置中断优先级分组。在主函数调用函数: void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); 整个系统执行过程中,只设置一次中断分组。 针对每个中断,设置对应的抢占优先级和响应优先级: void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);//配置过程 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口1中断,此处可改为任何有中断功能
[单片机]
STM32学习之路(三)——GPIO+USART联调
看惯了第一次就玩 点灯 的教程,没啥意思,这回来个串口和 点灯 一起玩的。前提多看看相关寄存器和库函数呦,稍微有点多,不过很快你会适应的。 步骤一:初始化时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1| RCC_APB2Periph_GPIOB, ENABLE); //使能外设时钟,GPIOB是灯 步骤二:初始化GPIO GPIO_InitTypeDef GPIO_InitStructure; GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPI
[单片机]
怎么使用C语言控制硬件
C语言的应用编程在单片机的领域占了很大一部分,使用的比较多的51单片机和STM32单片机都可以使用MDK软件编写固件。 单片机烧写了固件后可以点亮LED灯,可以驱动ADC检测电压,也可以驱动蜂鸣器发声,这就是简单地控制硬件。稍微复杂一点的,可以驱动NRF2401进行无线的连接,也可以使用ESP8266这类wifi芯片连接网络。 接下来,简单地讲讲如何使用C语言控制硬件。 1、电路连接 简单的模块可以直接使用高低电平来控制,比如红外线发射模块,当你在驱动引脚上的电压达到3.3v,就能发出红外线;然后将电平设置为0v,红外线发射就停止了。 一般而言,单片机的引脚输出电压能够达到3.3v,也是可以点亮红外线LED,但是可能会导致
[单片机]