
上周拿到申请的Nucleo开发板,今天终于有空上电把玩了。4 L% B. u `, o' n! @4 Z# h 一直在做基于CM3和CM0的应用,对于CM4还处于探索阶段。 为了便于上手,暂时不深入寄存器操作,以固件库为主。5 H6 `4 B) e0 y( k0 J# i4 [; p 先在官方例程的基础上加入了串口收发的代码,做了一个入门试验。& O0 c: I \) A 实现内容:1 k) X4 G6 r1 C/ C# Y: @9 Q 1,LD2(绿灯)闪烁的同时,通过USART1向外发送数据buf[10]; 2,向USART1发送10个数据,可以更新buf[10]的内容。: Q8 j+ S( ]* Y ![]() 图1-1试验结果的截图 ![]() 图1-2开发板-USB转232小板-PC接线截图 下面对修改的代码进行简单的说明。 $ @2 ~6 I7 `- @& ?1)在main()函数中插入测试代码: ) X6 q! o) C2 i* J1.1在LED2代码前插入Test()函数,用于串口初始化。 5 K0 X' S% F9 G* k5 Nelse /* Shield not mounted */ { ; N; U9 W9 q5 _) ^ L Test();//insert code LED2_Blink(); } 1.2在LED2_Blink()函数中插入COM1_Send(*pTxBuff, length),实现数据buff的发送。! |0 S5 r; q8 P- b- k) e while(1)! X' i. p1 p3 F- U9 m) ] {% H, g7 k5 V( I5 I/ y4 } /* Test on blink speed */ if(BlinkSpeed == 0) {! L6 G- B+ L: r x STM_EVAL_LEDToggle(LED2); COM1_Send(buff,10);//insert code* g& \: L K4 f! F /* Wait for 500ms */ Delay(500); ' J+ ^ ] ]; ^2 J } & _1 a& N$ S) j1 Y' h3 L9 Z else if(BlinkSpeed == 1)# m" Z$ X2 x' |, o1 k {& ^2 Y4 d: w7 X, k y* o% b, h STM_EVAL_LEDToggle(LED2);1 v4 [$ S+ o. M1 r5 e COM1_Send(buff,10);//insert code* n: F" S+ w. `! B" h /* Wait for 100ms */: F7 U I# N4 Z( X/ K4 J Delay(100); } else if(BlinkSpeed == 2)$ M9 W3 A) ^9 V Q {0 Y' _# a' \5 G6 {2 B* V STM_EVAL_LEDToggle(LED2); COM1_Send(buff,10);//insert code /* wait for 50ms */* w% q: W% U* C! D& b Delay(50); 2 k. n6 d/ b2 X3 x' ^7 T3 U }6 p1 r4 z# q w) X }+ ?8 S$ w1 D+ p! _' Q $ w; ~: E4 b9 z8 ~% J# N0 h 1.3中断处理程序中,通过接收数据来更新buff缓存中的数据。$ f: s- `8 c! o. i$ @1 f extern u8 buff[]; u8 cur;7 T" n: c' `& M1 }# L4 R; f% t u8 index_us = 0; void USART1_IRQHandler(void)7 z. C0 W3 j. o { u16 srg = USART1->ISR;- v$ b4 ]$ f# l$ a. V# r" o7 P4 Z if (srg & 0x20) { cur = USART1->RDR; # |5 v1 b, m0 g1 Z4 z1 g7 r! m" i buff[index_us] = cur;- w/ b( z. {' f% A) ^# Q1 }6 S index_us++;3 B- j$ j3 v9 i1 @. R index_us %= 11;: ]. }/ W g4 S& }, h; I }6 @: ^8 H1 o7 I5 M2 u C } + m6 a6 S4 ~1 J' @9 n/ x! @. A 2.试验程序的工程为:~\STM32_Nucleo_FW_V1.2.1\Projects\NUCLEO-F302R8\Demonstration\MDK-ARM\STM32F302_Nucleo_Demo.uvproj9 g! M5 u" ?: V# K2 a9 D4 z( J ![]() |
RE:【Nucleo板开发日志】+开发板入门程序(Keil_v5)---USART中断模式收发
回复:【Nucleo板开发日志】+开发板入门程序(Keil_v5)---USART中断模式收发
用于CAN、RTC、RS485等应用。
回复:【Nucleo板开发日志】+开发板入门程序(Keil_v5)---USART中断模式收发