stm32串口接收数据程序
void init_usart(void)
//rcc初始化
rcc_apb2periphclockcmd(rcc_apb2periph_gpioa | rcc_apb2periph_afio,,enable);//使能gpioa时钟
rcc_apb1periphclockcmd(rcc_apb1periph_usart2,enable);
//nvic
nvic_ inittypedef nvic_initstructure;#ifdef vect_tab_ram
nvic_setvectortable(nvic_vecttab_ram,ox0);#else
nvic_setvectortable(nvic_vecttab_flash,ox0);#endif
nvic_prioritygroupconfig(nvic_prioritygroup_0);
nvic_initstructure.nvic_irqchannel = usart2_irqn;nvic_initstructure.nvic_irqchannelsubpriority = o;nvic_initstructure.nvic_irqchannelcmd = enable;nvic_init(&nvic_lnitstructure);
//gpio初始化
gpio_ilnittypedef gpio_initstructure;
gpio_initstructure.gpio_mode = gpio_mode_af_pp;gpio_ilnitstructure.gpio_speed = gpio_speed_5omhz;gpio_initstructure.gpio_pin = gpio_pin_2;
gpio_init(gpioa,&gpio_initstructure);
gpio_initstructure.gpio_mode = gpio_mode_in_floating;gpio_initstructure.gpio_speed = gpio_speed_5omhz;gpio_initstructure.gpio_pin = gpio_pin_3;
gpio_init(gpioa,&gpio_initstructure);
//usart初始
//usart_deinit(usart2);
usart_inittypedef usart_initstructure;
//串口设置恢复默认参数
usart_clockinittypedef usart_clocklnitstructure;
usart_initstructure.usart_baudrate = 9600;
//波特率9600
usart_initstructure.usart_wordlength = usart_wordlength_8b;//字长8位usart_initstructure.usart_stopbits = usart_stopbits_1;
//1位停止字节
usart_initstructure.usart_parity = usart_parity_no;
川/无奇偶校验
usart_ilnitstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;//无流控制
usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx;//打开rx接收和tx发送功能
usart_clockinitstructure.usart_clock =usart_clock_disable;usart_clockinitstructure.usart_cpol =usart_cpol_high;usart_clockinitstructure.usart_cpha =usart_cpha_2edge;usart_clocklnitstructure.usart_lastbit =usart_lastbit_disable;usart_clocklnit(usart2,&usart_clockinitstructure);
usart_init(usart2,&usart_initstructure);
//初始化
usart_itconfig(usart2,usart_it_rxne,enable);//开启接收中断,这个必须在打开串口之前设置usart_cmd(usart2,enable);
/启动串口
void usart2_irqhandler(void)
//接收中断
if(usart_getltstatus(usart2,usart_it_rxne)==set)(
usart_clearltpendingbit(usart2,usart_it_rxne);usart_rx=usart_receivedata(usart2);
usart_rx_flag=1;
}
//溢出-如果发生溢出需要先读sr,再读dr寄存器则可清除不断入中断的问题[牛人说要这样]if(usart_getflagstatus(usart2,usart_flag_ore)==set)
usart_clearflag(usart2,usart_flag_ore);//读sr其实就是清除标志usart_receivedata(usart2);//读dr
}
}
文章整合自:dgzj
新微型化双频带功率放大器模块
辉煌控股力为投资者提供方便快捷的交易服务体验
电荷泵的工作原理
我国发射超级卫星!太空里的“高速超车”,万米高空、茫茫大海随时随地高速上网!厉害了我的国
南麟 日光灯应用 方案
stm32串口接收数据程序
220V转5V120MA交流转直流降压芯片
上海市委常委一行到访禾赛科技深入调研
全球首个28nm FPGA产品从赛灵思开始发货
Avigilon新推出具有AI功能的H5M室外半球摄像机
2024年,人形机器人迎来产业化元年
CVPR | 数字文艺复兴:NVIDIA Neuralangelo 研究重构 3D 场景
因特网太贵?“多跳网络”帮你搭建物联网!
智能压力变送器如何改变量程
浅谈贴片电感的作用
DC-DC开关电源管理芯片的设计
分补电容器的元件都有哪些类型
恶劣环境下的开关和多路复用器设计注意事项
【转】分析迈拓KVM切换器的优势
Kafka的核心概念