完整源碼:
stm32_test_20200417_呼吸燈.7z
(176.35 KB, 售價: 1 E幣)
2020-6-10 17:14 上傳
點擊文件名下載附件
售價: 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)指出,本站將立即改正。
|