完整源码:
stm32_test_20200417_呼吸灯.7z
(176.35 KB, 售价: 1 E币)
部分源码:
- 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;
- }
- }
-
- }
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|