|
在研究stm32的时候,曾经遇到过不少问题,就拿UART来说吧,遇到过RS232数据发送错误的,遇到不能接收字符串的,遇到RS485不能接收的,或只能接收一个字节的等等问题,但这些问题都 一一解决了。下面这段代码是在最新STM32F429探索板上测试通过的,费话不多说,直接上代码,采用中断接接,查询发送 void Uart5_Init(void); H3 z9 k/ y# H' E+ i {! S! A( N; w" f6 B, |0 ] GPIO_InitTypeDef GPIO_InitStructure;7 {& [4 {5 D5 H9 r- ~4 F3 c USART_InitTypeDef USART_InitStructure;2 @; r w6 O3 }0 V& T1 s NVIC_InitTypeDef NVIC_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD,ENABLE);8 E. ?0 s( E7 v9 Y' N/ ~- I3 `5 w0 i RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5,ENABLE);( X& w. | B# J# ?' Y/ T' R# s * d8 A0 M# O* K 5 k( [) Q Z: i. f' ?3 u1 q GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;( F1 H6 O2 s: R0 B! Y+ L8 J0 R GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;9 U* F* J) @. G7 ?( C! ] GPIO_Init(GPIOC,&GPIO_InitStructure); - Z* J1 T; y0 \$ z3 Y' C; } GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;' S: x4 e& o( ~: j GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; GPIO_Init(GPIOD,&GPIO_InitStructure); + X# j7 v0 T$ Z& G, C$ ? GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;9 E- ?1 R T+ g* g( r. E4 v; e GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;3 ?3 y/ h3 E+ n. ?; w GPIO_Init(GPIOB,&GPIO_InitStructure);: A2 K, x6 `1 C0 H2 T " z. x- k2 F( {9 q+ P _. ` GPIO_ResetBits(GPIOB,GPIO_Pin_4);% M( C- K! }5 o; Q GPIO_PinAFConfig(GPIOC,GPIO_PinSource12,GPIO_AF_UART5); GPIO_PinAFConfig(GPIOD,GPIO_PinSource2,GPIO_AF_UART5); USART_DeInit(UART5);# Q2 D- I& l u USART_InitStructure.USART_BaudRate=4800; USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;& Z2 H# H: }' @8 s USART_InitStructure.USART_WordLength=USART_WordLength_9b;( E6 z1 E" A8 M* q USART_InitStructure.USART_Parity=USART_Parity_Odd; USART_InitStructure.USART_StopBits=USART_StopBits_1;1 y) y3 ^0 ~$ E$ S- _ USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_Init(UART5,&USART_InitStructure); NVIC_InitStructure.NVIC_IRQChannel=UART5_IRQn;0 O7 P3 [; T2 F NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;. f% J( a5 `) f; g: E) O NVIC_InitStructure.NVIC_IRQChannelSubPriority=2; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;3 B: L( \6 ?6 g9 M- e+ y/ n. [ NVIC_Init(&NVIC_InitStructure);. E$ ?7 s+ ?+ Z5 E; a USART_ITConfig(UART5,USART_IT_RXNE,ENABLE); USART_Cmd(UART5,ENABLE);- ~) j- e- } f+ J 4 V6 i: }% O! m0 K7 F+ k( \ } void UART5_IRQHandler(void) {0 W3 p- Q4 K/ h # x: j$ h& E6 q O if(USART_GetITStatus(UART5,USART_IT_RXNE)==SET) { O7 t& w. A) f5 L% t5 Q USART_ClearITPendingBit(UART5,USART_IT_RXNE); recdata[rec_num]=USART_ReceiveData(UART5); rec_num++;( T5 L5 _# F2 Q; X% r- R6 f# s }) r7 S$ B: {7 \7 Q6 b. j GPIO_ToggleBits(GPIOG,GPIO_Pin_14); } void USART_SendStr(USART_TypeDef* USARTx,uint8_t *str) { //USART_ITConfig(UART5,USART_IT_RXNE,DISABLE); GPIO_SetBits(GPIOB,GPIO_Pin_4); y, F$ y) c% F: `( A. J/ n while(*str)7 x. ?8 f2 v6 P9 O { while((USART_GetFlagStatus(USARTx,USART_FLAG_TXE))!=SET); USART_SendData(USARTx,*str);' Q, _7 t! @! c, l7 Q str++;. U/ E; c( [1 }1 W8 S* s) B7 B } while((USART_GetFlagStatus(USARTx,USART_FLAG_TC))!=SET); * \6 ?2 M X: V4 V GPIO_ResetBits(GPIOB,GPIO_Pin_4); //USART_ITConfig(UART5,USART_IT_RXNE,ENABLE); } |
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32F4中文用户手册
STM32F400、STM32F402 Cortex-M4超值单片机
SPI 高温读错最后一位?STM32F42xx 官方根治方案
微信公众号
手机版
RE:【MCU实战经验】+基于STM32F429的RS485通信参考代码例子
RE:【MCU实战经验】+基于STM32F429的RS485通信参考代码例子
回复:【MCU实战经验】+基于STM32F429的RS485通信参考代码例子
楼主已经拿到板子了? 6 X$ q1 b1 v1 x* s+ R1 o
一直在研究STM32,有同事在另一个论坛得到一块这样的板子,我就顺便写写代码,拿别人的板子测试了一下,感觉还不错,比STM32F103强多了,所以也想来申请一块深入研究。
回复:【MCU实战经验】+基于STM32F429的RS485通信参考代码例子
回复第 3 楼 于2014-04-16 08:58:25发表:/ t. t) v% T0 D$ X* r
楼主已经拿到板子了? % X3 L& V, ^7 E
一直在研究STM32,有同事在另一个论坛得到一块这样的板子,我就顺便写写代码,拿别人的板子测试了一下,感觉还不错,比STM32F103强多了,所以也想来申请一块深入研究。* m9 W9 E( D+ ?/ ~- C
3 n4 ]1 y N. A% R
回复:【MCU实战经验】+基于STM32F429的RS485通信参考代码例子
回复第 4 楼 于2014-04-16 09:20:01发表:) D5 m* m( R; r% x4 T
回复第 3 楼 于2014-04-16 08:58:25发表:
楼主已经拿到板子了?
一直在研究STM32,有同事在另一个论坛得到一块这样的板子,我就顺便写写代码,拿别人的板子测试了一下,感觉还不错,比STM32F103强多了,所以也想来申请一块深入研究。
' G' w& f" @: l9 J2 v4 a
能走走后门不?