
串口协议和RS—232标准 串口通信协议:是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485 RS—232标准:RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。因此,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。 RS232电平与TTL电平的区别 TTL标准: TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。1 g& P& j* H2 O3 b RS232标准: 逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次 USB/TTL转RS232- w# ?; H% B. F( K/ r9 ? - L/ ^7 K8 U. l/ @! D2 B* _ 6 d. P4 A. A# d9 r O# L CH340串口安装 ![]() 双击安装即可,检查是否安装成功,插入USB串口后,点击设备管理器,检查端口是否有CH340 V$ ]/ ~7 g4 U! d2 X- h1 ?# Y ![]() 安装stm32cubemx并编写程序 安装,把所有的框都选上7 ~- |/ P" ^: i1 b% c5 T+ [, a 安装完成后,点击help,下载依赖包 / f6 n. t, G# o/ \& x( s ![]() 下载完成后,选择自己的芯片,选择前面的复选框下载,绿色代表下载好了( n# H, B2 S3 F4 @9 \6 r 你们选择后,点击install now就行 , g. q" o+ l! W9 P. N% v . t1 G. ^; o% a+ M! k9 ? ![]() ! a% R5 A$ T" ]% E 下载完成后回到home界面。点击图中的地方,创建新项目5 P* d6 h7 e/ U: D ![]() 点击part name输入自己的芯片,以stmc8t6 为例,之后中间出现的信息点击之后,在点击start project! @- \( H9 P* g ![]() 点击system core,进入里面的sys,在debug那里选择serial wire, }/ W1 A" C7 ^0 k ![]() ![]() 0 w9 b" W7 ?, E+ {. Z$ ?- \ 接下来进行配置时钟,进入rcc,有两个时钟hse,lse,我们要用GPIO借口,这些接口在APB2里8 l; b4 D" z2 P) O% {* P 观察时钟架构,APB2由hse时钟控制,同时在这个界面把PLLCLK右边选上) y) l+ I- A% e: G6 n4 S ![]() 所以我们把hse那里设置为crystal/ceramic resonator就行了: D) g, G. a3 b % L+ Y5 \$ I9 p, C3 H& a" i5 l { ![]() 接下来就是点击相应的引脚设置输出寄存器,output哪一项,一共三个PA7* j. a/ T/ m) \( d PB9 PC15: H2 o, ]! k6 X4 w+ H3 j {( H 1 q( L) X! f, t" v: K" ^! i ![]() 接下来点击system core里的GPIO,点击引脚名,把输出等级改为hight mode不用改 & B7 S! U/ H) x; k) ~# A- r ![]() 7 y3 P6 { ~/ ?: { 点击project manager 配置好自己的路径名和项目名,然后改IDE为MDK—ARM : F: @2 _, O( k/ R! J) f4 e0 e1 a ![]() : c8 K( q5 V8 q$ K1 P9 @4 a' W- T 进入code generate界面,选择生成初始化文件.c/.h,之后在点击generate code就行了% r& i9 Y* `# O1 P7 S6 X ![]() 打开刚刚生成的项目将main.c的主函数部分用下列函数代替( U0 s9 }: q1 t; {
![]() 9 ~: L: [/ L9 X7 e/ [" Z: y 在烧录运行,串口要断电置boot0为0,之后即可编译运行成功 9 T4 G& F7 z5 u 实现led灯的周期闪烁 ' v3 W7 D: j" U8 s, D% x7 Q ![]() 8 M; a. y5 E5 ^& M% g, z 进入flymcu进行烧录) `" b: [( X9 Y0 T " W; T9 o0 e& H' R: N/ k ![]() ! C+ i; Y) d& G 效果图如下+ I5 m' B8 g0 F / m/ U* _' c/ L) [) {( X! J) T8 [* v1 W ![]() 用stm32完成USART串口通信 打开stm32cubeMX,进入我的工程,选择芯片,开始进入& X: _) A \" ^9 b/ I+ C ![]() " h9 B8 @' M* ?9 B 接下来选择时钟配置 ( e# q' F' m# S ![]() , p$ y- m9 V j, p/ @1 t 设置USART2,点击MODE,选择Asynchronous5 ^$ U: i$ U0 A Z* ]) i& ~6 p 9 t8 {- D0 i. n2 k9 P ![]() " N5 H& z. e9 T/ q! U 接着点击CLOCK configurstion选择HSE,PLLCLK / X, A7 n. |0 ` ![]() 设置中断,在NVIC SEtting中点击Enabled$ P' ]: O6 k( w- u/ G7 k- ?" | / |8 {! q* E3 u) B0 { ![]() " G! a4 k6 A" M* @' L* n 后面设置路径,只需要修改Application Structure为Basic,在Toolchain/IDE为MDK—ARM,在Code generate勾选生成项目 ![]() ![]() & `$ |. k& \% B/ [- J " K: J, c; ~ c( p! w 后面生成工程打开即可 只需要把main.c里面的程序改为下列代码
![]() . a0 L( r) k5 K) l( ]- @4 `3 {% s8 b 后面进行烧录" P/ R% O6 R% B 打开串行助手打印出hello windows 9 t' d; U; b6 B9 _$ v ![]() 1 b0 E( C# v( T& ]7 B/ j 接下来进行波形观察 对keil进行相关操作 5 C! S, p; [8 k: ? ![]() , J# Q5 D$ F9 G/ v# C$ w 之后打开逻辑分析仪,选择端口,设置bit,运行就可观察到波形9 b3 c, O: G( d. t 7 u0 Z* O" S0 H3 e- Y& |/ I0 j ![]() 大约1s一个波形: u0 Y5 n. z# S' C: f ![]() 总结1 \4 ]4 l# b0 _ 通过本次实验我更加了解了stm32cubeMX的分装功能,更加了解到stm32d寄存器映射原理,最终完成了本次实验/ k5 `. t( K$ K7 D$ K+ \6 @0 C ———————————————— 版权声明:&是梦都会空 如有侵权请联系删除 4 i, A Y* |2 t4 }0 {" l |
OpenBLT移植到STM32F405开发板
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
【NUCLEO-WB09KE评测】STM32WB09KE的内部BootLoader使用
11111111111111111111111111111111111
STM32芯片ISP串口程序一键下载—FlyMcu
如何使用CubeMX实现STM32的串口通信以及对printf等函数的重定向
基于STM32串口中断之缓存区溢出卡死经验分享
基于STM32 Azure USBx 开发的经验分享
NUCLEO-U545RE-Q评测】4. 串口实用收发测试
NUCLEO-U545RE-Q板卡评测 (第二篇外传)UART的单线半双工的上拉电阻问题