[UART输出字符和字符串]

main.cua

#include "uart4.h"

extern void printf(const char *fmt, ...);

void delay_ms(int ms)

{

	int i,j;

	for(i = 0; i < ms;i++)

		for (j = 0; j < 1800; j++);
}

int main()

{
	hal_uart_init();

	while(1)
	{
		hal_put_char(hal_get_char()+1);

		//hal_put_string(hal_get_string());
	}
	return 0;
}

uart.h

#ifndef __UART_H__
#define __UART_H__

void __uart_init();

void __uart_putc(const char data);

void __uart_puts(const  char  *pstr);

char __uart_getc(void);

#endif 

uart.c

#include "uart4.h"
//初始化函数
void hal_uart_init(){
/**********RCC章节初始化**********/

//1.使能GPIOB组控制器 
RCC->MP_AHB4ENSETR |= (0x1<<1);
//2.使能GPIOG组控制器 
RCC->MP_AHB4ENSETR |=(0x1<<6);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用STM32的28335芯片进行UART接收字符串的时候,可以使用以下步骤: 1. 配置UART端口,设置波特率、数据位、校验位、停止位等参数。 2. 开启UART接收中断,使得每当有数据到达时,芯片会触发中断并执行相应的中断服务程序。 3. 在中断服务程序中,使用一个缓存区来存储接收到的数据,直到接收到了一个完整的字符串。 4. 对于接收到的数据,可以使用串口调试助手等工具进行验证和调试。 以下是一个简单的示例代码,可以实现UART接收字符串的功能: ```c #include "stm32f28335.h" #define BUFFER_SIZE 100 char buffer[BUFFER_SIZE]; int buffer_index = 0; void USART2_IRQHandler(void) { if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) { char data = USART_ReceiveData(USART2); if(data == '\r' || buffer_index >= BUFFER_SIZE - 1) { buffer[buffer_index] = '\0'; buffer_index = 0; // 处理接收到的字符串,例如打印到串口调试助手 } else { buffer[buffer_index++] = data; } } } int main(void) { // 配置GPIO、USART等 USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &USART_InitStructure); USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); USART_Cmd(USART2, ENABLE); while(1) { // 程序主循环 } } ``` 在上述代码中,我们使用了一个缓存区来存储接收到的数据,并在接收到回车符或者缓存区满时将缓存区中的数据视为一个完整的字符串。在实际项目中,需要根据具体的需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值