STM32串口发送数据模块
更新时间:2024-01-31 23:32:01 阅读量: 教育文库 文档下载
主函数:
#include \#include \int main(void) {
//系统时钟初始化函数定义 SystemInit();
//串口初始化函数定义 USART1_Config();
printf(\
printf(\欢迎使用CHD1807_STM32实验板:) \\r\\n\printf(\
USART1_printf(USART1, \
USART_SendData(USART1,0x31); //发送数据,参数1为串口外设,参数2为数据的ASCLL码
while(1); }
串口定义函数: #include \#include
* 函数名:USART1_Config
* 描述 :USART1 GPIO 配置,工作模式配置。115200 8-N-1 * 输入 :无 * 输出 : 无
* 调用 :外部调用 */
void USART1_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; /* config USART1 clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); /* USART1 GPIO config */ /* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART1 Rx (PA.10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);
/* USART1 mode config */
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据长度为8为 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(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); } /*
* 函数名:fputc
* 描述 :重定向c库函数printf到USART1 * 输入 :无 * 输出 :无
* 调用 :由printf调用 */
int fputc(int ch, FILE *f) { // } /*
/* 将Printf内容发往串口 */
USART_SendData(USART1, (unsigned char) ch); while (!(USART1->SR & USART_FLAG_TXE));
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET); return (ch);
* 函数名:itoa
* 描述 :将整形数据转换成字符串
* 输入 :-radix =10 表示10进制,其他结果为0 * -value 要转换的整形数 * -buf 转换后的字符串 * -radix = 10 * 输出 :无 * 返回 :无
* 调用 :被USART1_printf()调用 */
static char *itoa(int value, char *string, int radix) {
int i, d; int flag = 0;
char *ptr = string;
/* This implementation only works for decimal numbers. */ if (radix != 10) {
*ptr = 0; return string; }
if (!value) {
*ptr++ = 0x30; *ptr = 0; return string; }
/* if this is a negative value insert the minus sign. */ if (value < 0) {
*ptr++ = '-';
/* Make the value positive. */ value *= -1; }
for (i = 10000; i > 0; i /= 10) {
d = value / i;
if (d || flag) {
*ptr++ = (char)(d + 0x30); value -= (d * i); flag = 1; } }
/* Null terminate the string. */ *ptr = 0;
return string;
} /* NCL_Itoa */ /*
* 函数名:USART1_printf
* 描述 :格式化输出,类似于C库中的printf,但这里没有用到C库 * 输入 :-USARTx 串口通道,这里只用到了串口1,即USART1 * -Data 要发送到串口的内容的指针 * -... 其他参数 * 输出 :无 * 返回 :无
* 调用 :外部调用
* 典型应用USART1_printf( USART1, \ * USART1_printf( USART1, \ * USART1_printf( USART1, \ */
void USART1_printf(USART_TypeDef* USARTx, uint8_t *Data,...) { const char *s; int d; char buf[16]; va_list ap; va_start(ap, Data);
while ( *Data != 0) // 判断是否到达字符串结束符 { if ( *Data == 0x5c ) //'\\' { switch ( *++Data ) { }
case 'r': //回车符 USART_SendData(USARTx, 0x0d); Data ++; break;
case 'n': //换行符 USART_SendData(USARTx, 0x0a); Data ++; break;
default: Data ++; break;
}
else if ( *Data == '%') { switch ( *++Data ) {
//
case 's': //字符串 s = va_arg(ap, const char *); for ( ; *s; s++) { USART_SendData(USARTx,*s); while( USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET ); } Data++; break; case 'd': //十进制 d = va_arg(ap, int); itoa(d, buf, 10); for (s = buf; *s; s++) { USART_SendData(USARTx,*s); while( USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET ); } Data++; break; default: Data++; break; } } /* end of else if */ else USART_SendData(USARTx, *Data++); while( USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET ); } }
/******************* CHD1807 Team *****END OF FILE************/
正在阅读:
STM32串口发送数据模块01-31
2016-2022年中国信用保险行业发展格局及十三五未来前景预测报告03-30
世德堂刊本《西游记》传本考述05-20
分公司项目部薪酬管理办法10-14
河南省郑州市2013学年八年级英语期末测试卷和答案07-04
ISO9001风险和机遇识别与评估分析表06-10
第七章 归 纳 推 理06-21
关于MM无线网络的技术介绍03-05
上海沪教高考300文言实词整理(全)06-01
大自然的手抄报02-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 串口
- 模块
- 发送
- 数据
- STM32
- 储罐焊接规范
- 中华人民共和国电子商务法(草案)
- 新编大学英语-浙江大学 第二册 答案
- 简笔画
- 深圳公务员聘任制变革之路
- 村监督委员会制度
- 《毕业实习》课程标准
- 如何提高信息技术教学中的课堂管理
- 清华大学《大学物理》试题及答案
- 中国南方电网水电经济运行指标规范
- 新四军在安徽数据库建设研究
- 街道党委领导班子思想政治建设汇报材料
- 白午小学2013 - 2014第一学期教导处工作计划
- 吉巷中心小学少年宫田径活动训练计划与总结
- 喷煤机原料用煤知识
- 苏科版生物八上第3节《生态系统的自我调节》word同步测试题
- 135战法55种方法图解--宁俊明2013版
- 企业破产重整案件审理规程(试行)
- 校舍改造施工组织设计
- 纪检案件程序和案件文书规范性要求