设为首页
收藏本站
开启辅助访问
登录
注册
只需一步,快速开始
首页
BBS
在线充值
搜索
工控币获得方法
联系方式
搜索
搜索
本版
帖子
用户
工控论坛
»
首页
›
电子技术
›
STM32/8
›
基于STM32F103VE实现呼吸灯源程序
返回列表
发新帖
基于STM32F103VE实现呼吸灯源程序
[复制链接]
0
|
0
|
2020-6-10 17:14:36
|
显示全部楼层
|
阅读模式
完整源码:
stm32_test_20200417_呼吸灯.7z
(176.35 KB, 售价: 1 工控币)
2020-6-10 17:14 上传
点击文件名下载附件
部分源码:
int main(void)
{
led_init(); // LED初始化函数
nvic_init(); // NVIC配置函数
exti_init(); // EXTI配置函数
usart_init(); // USART配置函数
tim_init(); // TIM配置函数
usart1_sendstring("This is a testing\n");
usart1_sendstring("Hello STM32\n");
/* Infinite loop */
while (1)
{
}
}
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
it.c:
// EXTI0中断服务函数
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET) // 确保相应中断发生了
{
EXTI_ClearITPendingBit(EXTI_Line0); // 清除EXTI0中断标志位
if(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5) == 0) // 判断LED引脚电平是否为0
{
GPIO_SetBits(GPIOB, GPIO_Pin_5); // LED OFF
}
else // GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5) == 1
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5); // LED ON
}
}
}
uint8_t rx_buffer_flag = 0;
uint8_t rx_buffer[5] = {0};
uint8_t rx_buffer_cnt = 0;
void USART1_IRQHandler(void)
{
uint8_t rcv_data = 0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // 确保相应的中断发生
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE); // 清除USART1接收中断位
rcv_data = USART_ReceiveData(USART1); // 接收数据
// usart1_sendbyte(rcv_data); // 发送数据
if(rcv_data == 0xAA)
{
rx_buffer_flag = 1;
}
if(rx_buffer_flag == 1)
{
rx_buffer[rx_buffer_cnt] = rcv_data;
rx_buffer_cnt++;
}
if(rx_buffer_cnt >= 4)
{
rx_buffer_flag = 0;
rx_buffer[4] = '\0';
usart1_sendstring((char *)(rx_buffer + 1));
rx_buffer_cnt = 0;
}
}
}
// TIM6中断服务函数
void TIM6_IRQHandler(void)
{
if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM6, TIM_IT_Update);
// if(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5) == 0) // 判断LED引脚电平是否为0
// {
// GPIO_SetBits(GPIOB, GPIO_Pin_5); // LED OFF
// }
// else // GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5) == 1
// {
// GPIO_ResetBits(GPIOB, GPIO_Pin_5); // LED ON
// }
}
}
// TIM3中断服务函数
uint8_t cnt1 = 0;
uint8_t cnt2 = 0;
uint8_t cnt_flag = 0;
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
cnt1++;
if(cnt1 >= 100)
{
cnt1 = 0;
TIM3->CCR3 = cnt2;
if(cnt_flag == 0)
{
cnt2++;
}
else
{
cnt2--;
}
if(cnt2 >= 100)
{
cnt_flag = 1;
}
else if(cnt2 == 0)
{
cnt_flag = 0;
}
}
}
}
复制代码
呼吸灯
,
led
,
stm32
相关帖子
•
labview做的LED流动滚动显示
•
STM32+LabVIEW的USB数据采集与显示源程序
•
STM32示波器程序ILI9341_IO模拟源程序+Proteus仿真
•
STM32F407 FLAC软解压 源程序
•
用PROTEUS8.9仿真实现STM32 ADC一路连续转换,值显示在LCD12864上
•
Proteus实现stm32单片机的闪烁灯实验程序
•
STM32控制4个LED灯循环点亮源程序和Proteus仿真
•
STM32音频产生器Proteus仿真程序
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
路漫漫
194
主题
199
帖子
74
积分
初级会员
初级会员, 积分 74, 距离下一级还需 426 积分
初级会员, 积分 74, 距离下一级还需 426 积分
工控币
74
加好友
发消息
回复楼主
返回列表
电子技术综合讨论
单片机嵌入式
EDA设计仿真
STM32/8
51单片机
上位机开发及系统管理
Labview
Multisim仿真
图文推荐
用Fanuc Karel语言实现三点建坐标系
2021-01-04
用CH341A做的USB转SPI_232_485_TTL转换器 PCB+SCH文件 烧写器源
2020-12-14
51单片机采集温度通过串口发送到labview上位机采集曲线显示
2020-12-13
基于组态王的占空比PID算法温度控制系统设计 含源码和文档
2020-12-13
基于LabVIEW的电动车速度监测和控制系统上位机程序设计
2020-12-08
热门排行
1
HOLLiAS MACS V6.5.2用户组态手册
2
labview汽车仪表仿真vi
3
基于51单片机数字电压表 程序 原理图 pcb
4
谁有Simatic net v16的激活工具 EBK不行啊
5
西门子PLC电气设计与编程自学宝典双色版 [
6
西门子G120变频器精英训练营视频教程
7
博途TIA Portal V16+UPD1
8
西门子S7-200 SMART 精英训练营视频教程(5
9
HMI人机交互设计大师课程(七集)
10
有没有 GE plc PME9.0版本的中文对照表