- void uart_init(u32 bound) {
- n0 w) [/ t7 f2 }3 B2 Q - //GPIO端口设置: ?$ U3 [. q! D: Y9 U X v
- GPIO_InitTypeDef GPIO_InitStructure;
6 f9 ]9 a9 G. U: q7 z" r' f1 ] - USART_InitTypeDef USART_InitStructure;% d: q, E. \& w
- NVIC_InitTypeDef NVIC_InitStructure;
% E5 m: a7 ^2 o0 G, w2 Z$ y$ B; { - 2 V; O. d7 t: b$ @! o+ X
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟6 m( R$ ]1 c( `- N; c
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);! |/ U9 G# q3 {# @
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);. ]+ n$ p, B" h1 f! ^9 \
- GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
, U0 Y8 W3 |# R! Y% g - // //USART1_TX GPIOA.9$ |6 K8 y( Q; i6 v" S; Y/ [1 @
- // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9% p5 _" C9 x) {; @& L# A) K9 y! R
- // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
9 f1 K/ x2 ~9 N6 B$ p0 N6 G% m - // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
Z; | p) y# }$ B9 o, w - // GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
$ o5 |7 Z7 y" K - //3 S5 F$ b: O1 f5 ^% m: z
- // //USART1_RX GPIOA.10初始化
* T! z/ r+ u4 u# ~$ X - // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA100 S- B3 T4 {0 J
- // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
) R y1 e! `$ ~ - // GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10
. p& L) g" b( [7 @ - /* TX PB6 */, G9 h& q6 c: Z. R0 S" h
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
" b3 L& X: @0 y! m: c - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
9 l" S a+ {" z3 J( o - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;( v; P a3 e0 a5 |) A1 Z$ I
- GPIO_Init(GPIOB, &GPIO_InitStructure);
/ f/ f! i0 ]. o# x. o* K
' F2 K# @2 i, U3 G4 F) ~' g/ i$ x- /* RX PB7 */
) j( J2 J& [" m W" L6 F; q - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
+ y; V5 N ?9 |& r/ T; ~ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
5 r6 A1 I6 }1 }9 q/ G0 f3 R+ g0 c' | - GPIO_Init(GPIOB, &GPIO_InitStructure);7 E, F+ S) x; \, O# q
- ! X n1 Y4 e# U: s! D
- ' {. G* w( M' k& i
- //Usart1 NVIC 配置
w( ]# R8 G3 q" W$ C$ g/ G8 } - NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;8 q3 P0 [& F. o1 `+ Z
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3 ; //抢占优先级3: f, n( `( D1 q4 ^) P& c0 e5 c
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
( f0 g* X6 `& s9 X$ L - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 f- Z! w, G* R/ D6 Q4 Q# m+ r
- NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
" H) m/ a: `1 p% v/ V
" U( M$ i# s1 \: S+ m+ u: K* E$ p- //USART 初始化设置
2 ?" @9 j& n$ }" x6 h - ) g9 |( T4 \2 Y" ~3 c
- USART_InitStructure.USART_BaudRate = bound;//串口波特率8 _: e& e: W+ K% E% n; w# ]/ m
- USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式4 P: W9 M) X2 c6 b6 Z! f! p
- USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位5 F/ b1 Q% d1 D. ^! O/ A. x( K8 k f
- USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位- ~/ [' J9 A" x- ?* e
- USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
* F# W# j1 Y' I - USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
' R% p+ }8 b$ I3 ^* C: W7 c* d( A
/ b" y X5 R, ]9 ^6 f- USART_Init(USART1, &USART_InitStructure); //初始化串口1
! W# q5 C; ]4 S z, M3 A! k) y. s# i - USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
2 q9 J+ c4 O/ H e - USART_Cmd(USART1, ENABLE); //使能串口1
$ s" K, |( Q3 i5 w' N e3 c: i) t
* A9 m. {% S3 U7 ^, _1 H- }! @% F/ A3 [' C2 e0 P5 Y. K' O. ~
- 5 \5 C; @. P4 ?
- $ A' N, M; }3 c& u
复制代码 版权声明:小盼你最萌哒( Z, d0 h8 C' o6 y6 G4 q2 L
如有侵权请联系删除
/ M7 H$ _; }% @ |