此处附上接收中断源码
#ifdef _RAISONANCE_
void USART_RX_IRQHandler(void) interrupt 28
#endif
uint8_t cnt_USART ;
#ifdef _IAR_SYSTEMS_
#pragma vector=30
__interrupt void USART_RX_IRQHandler(void)
#endif
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
USART_ClearITPendingBit ();//清中断标志
if(!USART_GetFlagStatus (USART_FLAG_RXNE))//等待接收完毕
{
p_rxbuf[cnt_USART++] = USART_ReceiveData8(); //接收数据
if(cnt_USART == 0x0B)
cnt_USART = 0xFF ;
}
// USART_RendCmd(p_rxbuf); //接收11bytes串口指令
}
cnt_USART 为全局变量,因为每次接收每次只是接收1byte,因此,在主程序应该进行适当的延时来等待缓冲区的数据被读取。
while(cnt_USART!=0xFF)
{
if(mark_1ms >100)
break;
}
在函数进行适当的延时进行等待,mark_1ms 此处是使用TIM2进行延时,也可以在主函数中进行空函数延时。
关键字:STM8 串口接收 字符串
引用地址:
STM8 串口接收字符串问题
推荐阅读最新更新时间:2024-11-04 21:49
STM8 SPI的学习
#define SPI_CS_PORT GPIOC #define SPI_CS_PIN GPIO_PIN_4 #define SPI_CLK_PORT GPIOC #define SPI_CLK_PIN GPIO_PIN_5 #define SPI_MOSI_PORT GPIOC #define SPI_MOSI_PIN GPIO_PIN_6 #define SPI_MISO_PORT GPIOC #define SPI_MISO_PIN GPIO_PIN_7 SPI是串行设备接口(Serial Peripheral Interface)的英文缩写,是一种单主多从式的全双工同步串行通信协议。 SCK:同步时钟信号线
[单片机]
STM8 CPU寄存器描述
简介 STM8S是基于8位框架结构的微控制器,其CPU内核有6个内部寄存器,通过这些寄存器可高效 地进行数据处理。STM8S的指令集支持80条基本 20种寻址模式,而且CPU的6个内部寄 存器都拥有可寻址的地址。如果想了解全部STM8S指令集,请参考STM8 微控制器家族编程手册 (PM0044)。 CPU寄存器 在图1所示的编程模型中可以看到6个CPU寄存器。在一个中断发生后,寄存器以图2所示顺序入栈,它们以相反的顺序出栈。如果需要的话,中断服务程序可使用POP和PUSH指令来对之进行操作。 CPU寄存器描述 累加器(A) 累加器是一个8位通用目的寄存器,用于保存算术运算、逻辑运算以及数据操作的操作数及结果。 索引寄存
[单片机]
关于串口FIFO中断
串口FIFO中断有;RDA CTI 串口的接收模块包括接收缓冲寄存器和移位寄存器。接收的数据进入移位寄存器后经移位处理并行传入缓冲寄存器,事实上,UART的FIFO是一个硬件环形的缓冲队列,物理上不可寻址,不可见,仅U0RBR这个FIFO出口可见。U0RBR就是接收FIFO的第一位。FIFO的长度是可设的,也叫触发点,低于这个长度的字符串不会引起中断,但在实际应用中,不可能串口读入的数据长度总为触发点值的整数倍,为此,引入了CTI即字符接收超时中断,当有不足触发点值规定的字符串读入时,将引起中断,其与串口的RDA中断具有相同的优先级,并会同时被使能。 那么,LPC2000的UART机制是如何判断串口读入数据的一次性容量呢?
[单片机]
STM32CubeIDE 中 HAL库的串口中断接收函数 HAL_UART_Receive_IT
一、代码自动生成以后的项目及代码结构: main.c中,调用了串口初始化 串口初始化函数赋值了串口的参数 相当于底层的初始化,配置引脚、并开启中断。 至此串口1配置完毕 二、库文件stm32f1xx_hal_uart.c内的秘密 2.1 初始化 1.usart.c中,MX_USART1_UART_Init 调用了库的HAL_UART_Init,将结构体传递进该函数中 2.HAL_UART_Init干了些什么事? if (huart- gState == HAL_UART_STATE_RESET) { huart- Lock = HAL_UNLOCKED; HAL_UART_MspInit(huar
[单片机]
使用 SDCC 开发 STM8
本文介绍如何在 EIDE 上将 STM8 标准库移植到 SDCC 工具链,并完成测试 以 STM8S105K4T6 为例,其他的库过程大都相同 1. 创建 STM8 项目 打开 EIDE, 新建项目,类型选择 C51,注意:路径里最好不要有中文空格,在编译器里会出错 切换工具链至 SDCC, 打开编译选项,设置 device 为 stm8 设置宏,本项目为:STM8S105,USE_STDPERIPH_DRIVER 新建一个目录,将复制外设库到里面,并去除掉芯片不支持的外设源文件 2. 移植过程:主要针对 stm8s.h, 其他文件基本不用动 移植的过程并不复杂,就是参照其他编译器的定义,查询 SDCC 手册,
[单片机]
更超值,STM8微控制器的单板Discovery 套件发布
意法半导体的 STM8-SO8-DISCO 8位微控制器(MCU) Discovery 套件,可让用户在板子上一次评估三款STM8微控制器。这三款STM8微控制器是目前市场上在售的采用主流8引脚SO8封装的产品。 除了三合一这个出色的性价比优势外,该套件还是一款简约的开发板,除启动下一步开发所需的最基本功能外,没有任何多余的的配置。主板上有一个按钮和一个LED指示灯,方便用户与电路板交互,嵌入式STLINK/V2和USB端口简化了在线调试和从PC下载代码的过程。这三款微控制器焊接在三个插接式DIL-8模块上,可以用手拔下DIL-8模块与紧凑型主板的连接之处,单独取下模块,进行原型开发。 该套件支持 STM8S001J
[单片机]
STM8与汇编语言(10)--UART应用之二
下面这个实验程序比较简单,它是在上篇基础上,增加了查询方式从UART接收一个字符的子程序。主循环中,等待接收一个字符,然后将接收到的字符再发送出去。如果与WINDOWS的超级终端相连,则键盘上按什么按键,则显示对应的字符。 同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。 编译通过后,下载到开发板,运行程序。在PC机上运行超级终端,波特率为9600,然后从键盘上输入按键,屏幕上就显示对应的字符。 stm8/ #include mapping.inc #include STM8S207C_S.INC ; 定义堆栈空间的起始位置和结束位置 s
[单片机]
关于STM8的AFR0和AFR1使用
芯片手册中写AFR0和AFR1不能同时使用 AFR1 Alternate function remapping option 1 (2) 0: AFR1 remapping option inactive: default alternate function(1); 1: Port A3 alternate function = SPI_NSS; port D2 alternate function =TIM2_CH3. AFR0 Alternate function remapping option 0(2) 0: AFR0 remapping option inactive: Default alternate func
[单片机]