【STM 8 L】STM 8 Lの補正ライブラリ関数GPIO_WriteBitのBug

1941 ワード

このブログの最終更新日時は2016年11月18日、02:54です.
一、概要
本稿ではSTM 8 Lのライブラリ関数GPIO_を修正します.WriteBitのBugです
二、実験プラットフォーム
コンパイルソフトウェア:IAR for STM 8 1.42.2
ハードウェアプラットフォーム:stm 8 l 101 f 3 p 6開発ボード
エミュレータ:ST-LINK
ライブラリ関数バージョン:STM 8 L_STMTouch_Lib_V 1.1.0
三、著作権声明
博主:甘いメロン
声明:水を飲んで井戸を掘った人を忘れないで、転載して出所を明記して下さい.
原文の住所:http://blog.csdn.NET/feilusia
連絡先:[email protected]
マクワウリBLEのCC 2541群:12442605
マクワウリBLEのCC 2640群:557278427
マクワウリBLEのAndroid群:54146202
マクワウリマクロプロセッサSTM 8/STM 32群:164311667
甘いマクワウリのお店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
四、バグ現象
GPIO_を通じてWriteBit関数はIOのレベルを制御できません.
五、実験ステップ
1、GPIO_を置換するWriteBit関数(stm 8 l 10 xupio.cで)
//******************************************************************************        
//name:             GPIO_WriteBit        
//introduce:        GPIO           
//parameter:        GPIOx:   (x = A to D)  
//                  GPIO_Pin: GPIO_Pin_0~GPIO_Pin_7 
//                  GPIO_BitVal: SET or RESET                      
//return:           none      
//author:                              
//email:            [email protected]         
//QQ group                STM8/STM32(164311667)                      
//changetime:       2016.11.18       
//******************************************************************************  
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, BitAction GPIO_BitVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  assert_param(IS_STATE_VALUE(GPIO_BitVal));

  if (GPIO_BitVal != RESET)
  {
    //SetBit(GPIOx->ODR, GPIO_Pin);//BUG  ,GPIO_Pin       ,  SetBit      。
    GPIOx->ODR |= GPIO_Pin;    
  }
  else
  {
    //ClrBit(GPIOx->ODR, GPIO_Pin);//BUG  ,GPIO_Pin       ,  SetBit      。
    GPIOx->ODR &= (uint8_t)(~GPIO_Pin);    
  }
}
六、実験結果
関数を修正したら、IO口は正常に引っ張られて低くなります.
それで実験は成功した.