完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人小白一枚,刚学STM32,想做个手机发送一个数字, 通过蓝牙模块接收,显示到数码管上。
程序大概是这样的 #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" u16 duan[10] = {0x01E6,0x024,0x02DF,0x027F,0x033D,0x037B,0x03FB,0x0026,0x00FFF,0x0367}; u16 wei[4] = {0xFFDF,0xFFEF,0xFFF7,0xFFFB}; u16 outled[]; int main(void) { u8 j; u32 num=0; Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 LED_Init(); //初始化与LED连接的硬件接口 while(1) { num++; outled[0]=duan[num%10000/1000]; outled[1]=duan[num%1000/100]; outled[2]=duan[num%100/10]; outled[3]=duan[num%10]; for(j=0;j<4;j++) { GPIOA->ODR=wei[j]; GPIOB->ODR = outled[j]; delay_ms(5); } } } 下面是串口程序 #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" int main(void) { u8 t; u8 len; Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化为9600 LED_Init(); //初始化与LED连接的硬件接口 while(1) { if(USART_RX_STA&0x80) { len=USART_RX_STA&0x3f;//得到此次接收到的数据长度 printf("rn您发送的消息为:rn"); for(t=0;t USART1->DR=USART_RX_BUF[t]; while((USART1->SR&0X40)==0);//等待发送结束 num=USART1->DR void smg(void) } printf("nn");//插入换行 USART_RX_STA=0; } } } 想问下数子怎么样放到,接收器缓冲区中, 跟51的有些不一样。51的是直接把数字赋值给缓冲区。 |
|
相关推荐
1个回答
|
|
很简单 缓冲区接收的是字符‘1’ 你对字符1进行处理就好了 把他转换成10进制显示
|
|
|
|
只有小组成员才能发言,加入小组>>
331浏览 1评论
447浏览 1评论
577浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
460浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
431浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 20:57 , Processed in 0.897115 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号