在调试FreeRTOS系统时,在串口中断中用队列存储数据,然后再定时器中断中用队列接收数据,并通过串口打印出来。在调试代码中编译器报错。
…OBJLED.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced
在网上搜索之后,找到了一个解决方法。在usart.c文件中添加以下代码,可以解决这个问题。
//__use_no_semihosting was requested, but _ttywrch was
_ttywrch(int ch)
{
ch = ch;
}
然后通过对比正点原子的代码,发现了另一个解决方法。在usart.c文件中直接屏蔽
#pragma import(__use_no_semihosting)
这行代码,也可以解决这个问题。
关键字:FreeRTOS STM32F103 串口通信错误
引用地址:
FreeRTOS+STM32F103串口通信错误解决方法
推荐阅读最新更新时间:2024-11-05 16:37
STM32F103定时器输入捕获功能
STM32F103单片机的定时器不仅能输出PWM波,而且还能捕获输入的PWM波。可以通过定时器的捕获功能测量输入PWM波的周期和占空比。 在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中。当发生捕获事件时,相应的CCxIF标志(TIMx_SR寄存器)被置1,如果开放了中断或者DMA操作,则将产生中断或者DMA请求。如果发生捕获事件时CCxIF标志已经为高,那么重复捕获标志CCxOF(TIMx_SR寄存器)被置1。写CCxIF=0可清除CCxIF,或读取存储在TIMx_CCRx寄存器中的捕获数据也可清除CCxIF。写CCxOF=0可清除CCxOF。
[单片机]
STM32f103 串口接收不定长数据
方法1:串口接受数据,定时器来判断超时是否接受数据完成。 方法2:DMA接受+IDLE中断 实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是200个字节,那么在单片机接收到一个字节的时候并不会产生串口中断,而是DMA在后台把数据默默地搬运到你指定的缓冲区里面。当整帧数据发送完毕之后串口才会产生一次中断,此时可以利用DMA_GetCurrDataCounter();函数计算出本次的数据接受长度,从而进行数据处理。 应用对象:适用于各种串口相关的通信协议,如:MODBUS,PPI
[单片机]
STM32F103C8T6学习笔记_跑马灯
1、跑马灯 IO口的设置 推挽输出 GPIO_Mode_Out_PP 输出高、低电平,连接数字器件(管脚负载能力强、开关速度快) led.c怎么写? #include led.h void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //时钟使能 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //哪个端口? GPIO_Ini
[单片机]
STM32CubeIDE开发环境新增FreeRTOS™线程感知调试功能
意法半导体STM32CubeIDE开发环境新增对FreeRTOS™线程感知调试的支持,让用户能够更快、更轻松地完成项目开发任务。今天的嵌入式系统因集成了网络安全、无线连接、图形用户界面和多工作模式等各种复杂先进功能而变得日益复杂,支持高效RTOS开发有助于解决这个复杂问题。 通过最新的软件更新,意法半导体将2017年收购的Atollic公司的 AtollicTrueStudio®for STM32 软件的主要先进功能成功转入STM32CubeIDE开发环境。STM32CubeIDE进一步扩展了软件功能,并可以直接访问STM32CubeMX配置功能,简化项目设置。用户可以从完整的STM32产品组合中选择目标微控制器,配置G
[单片机]
stm32f103的RTC驱动程序
具体问题 这段时间在弄自己的一个《宝宝的气象站》的项目,使用了ESP8266的WiFi模块,使其能够将数据传输到OneNET后台并显示。网络通信使用的是OneNET提供的EDP通信组件,但是RTC遇到了问题。从NTP服务器获取的时间与本地RTC获取的时间有差异。NTP使用的是1970年1月1日作为起始时间点。本地RTC的起始点是2000年1月1日。这样就需要将NTP获取的秒减去两个时间的间隔。 代码 mip_rtc.h /** ***************************************************************************** * @文 件: mip_rtc.h *
[单片机]
stm32f107应用之与stm32F103的区别
STM32F107和STM32F103的区别 两个系列的处理器都是以“stm32”为开头的,即这两个都是stm32芯片,是意法半导体为ARM Cortex-M3内核出的用于自动控制领域的微处理器。F107是互联型接口,且内部资源较多,F103是增强型(比F101强),相比F103,F107加入IEEE以太网接口,2个IIS音频接口(做音频解码用),全部64KByte的SRAM缓存。除此之外,两系列的芯片基本相同。 这两个芯片的开发方法和调用的库函数都是一样的,通过官方称他们为STM32f10X就知道了,引脚绝大部分也是兼容的。那么在使用中,如果开发产片偏向于以太网和IIS音频设备,建议选用F107系列产品,否则F103就可以了
[单片机]
STM32F103之DMA实验,内存通过DMA向串口1发送数据
#include dma.h ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// DMA_InitTypeDef DMA_InitStructure; u16 DMA1_MEM_LEN;//保存DMA每次数据传送的长度 //DMA1的各通道配置 //这里的传输形式是固定的,这点要根据不同的情况来修改 //从存储器- 外设模式
[单片机]
基于FreeRTOS的机智云接入教程分享
本教程是使用的STM32F103C8T6,并结合FreeRTOS和机智云撰写的教程。其中使用操作系统主要是为了保证系统的稳定性,否则当逻辑复杂之后,很容易造成系统崩溃,并且在教程中提供了例程模板,大家可以基于该例程模板上就行修改,就可以用到自己的项目中了。该教程主要参照正点原子的教程所撰写,感谢正点原子提供的技术资料。由于是第一次写博客,可能有些写得不太好,希望能理解。 1、WIFI固件烧写 这里使用的是正点原子的WIFI模块,详细资料请参照提供的正点原子的资料,这里简单的说明下,首先把WIFI模块的IO_0接地之后,用串口转TTL模块将固件烧录到WIFI模块即可。固件打包在本教程所在文件夹的固件资料里。这里只贴一张地址配置图
[单片机]