完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一,用MX软件和HAL库进行初步的编写,并用高低电平控制LED灯亮灭
1 用STMCUBEmx对要求进行输入 在软件打开的初始界面里面选择FILE新建工程 在出现的下列中搜索我们使用的STM32F103C8芯片双击进入编辑 在接下来出现的界面里面选择第一个分支里面的SYS将里面 Debug选择为以下内容 然后在RCC分支里面的HSE更改为如下 然后点进GPIO分支将我们控制开关和LED灯的串口设置为输出也就是OUTPUT以及外部中断我选择的是PB7为开关,PA2为LED灯。 然后进入CLOCK窗口里面,选择PLLCLK改成72Mhz 然后进入Project配置界面,配置好自己的名称和路径然后在IDE栏选择为MDK-ARM 然后选择初始化文件就可以了,然后点击右上角的生成 2 更改main.c里面的内容 打开项目所在的文件夹打开项目在主函数前面用下列函数 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){3. 烧录并运行 然后进行烧录。在进行运行结果如下 二 中断实现串口通信 也是使用MX软件新建工程和以上一样的配置过程 SYS RCC 然后在左边的第四个分支里面选择USART1里面配置如下 然后对project进行配置也是和以上一样的 2 在keil中打开项目对main.c进行相应的更改 打开main.c文件,在头文件调用 下面加入以下内容 uint8_t aRxBuffer;//接收缓冲中断uint8_t Uart1_RxBuff[256];//接收缓冲uint8_t Uart1_Rx_Cnt=0;//接收缓冲计数uint8_t cAlmStr[; 然后在main函数之前写入回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)最后在main函数里面加入以下中断函数 HAL_Init();3 最后进行烧录,然后在野火串口助手里面进行手动输入数据结果如下 三 使用DMA向上位发送信息 使用MX文件创建新工程,在选择STM32F103C8Tx双击进去,在第四个分支里面点出来将芯片的PA9和PA10分别选择为TX和RX,然后在左边mode里面选择Asynchronous,然后添加两个分别为TX和RX的引脚 然后配置project里面输入名字和路径,以及将IDE改为 MDK-ARM 还有选择初始化文件,生成项目 然后去keil里面打开工程去main.c里面的主函数里面的while循环里面的内容加入以下 uint8_t send_char[;然后对hex文件进行烧录,并进行运行结果如下 达成用DMA连续发送串口通信 四 总结 通过使用STMCUBEMX软件调用hal库函数进行简单的程序生成对led灯进行开关的控制以及中断,DMA的串口通信方式学到了通过触发中断来得到我们想要的结果。 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
597浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:57 , Processed in 1.336180 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号